我在局部视图中有一个Ajax.BeginForm(),它包含布尔值的CheckBox。模型如下所示;
public class ViewBusinessAdd
{
[Required(ErrorMessage="Name must be supplied")]
[Display(Name = "Business Name")]
public string Name { get; set; }
[Required(ErrorMessage = "Contact must be supplied")]
[Display(Name = "Business Contact")]
public string Contact { get; set; }
[Display(Name = "Phone Number")]
public string Number { get; set; }
public string Postcode { get; set; }
public Dictionary<string, string> States { get; set; }
public string AddressRegion { get; set; }
public bool IsFacebookPost { get; set; }
public List<RecommendationViewAttribute> Attributes { get; set; }
}
CheckBox是使用Html辅助对象呈现的;
<div class="control-group">
<label class="control-label">
@Html.LabelFor(m => m.IsFacebookPost, "Post recommendation")
<img src="~/Content/images/f_logo.png" alt="Facebook" />
</label>
<div class="controls">
@Html.CheckBoxFor(m => m.IsFacebookPost)
</div>
</div>
这将在渲染时生成以下HTML;
<input data-val="true" data-val-required="The IsFacebookPost field is required." id="IsFacebookPost" name="IsFacebookPost" type="checkbox" value="true" /><input name="IsFacebookPost" type="hidden" value="false" />
使用提交表单时,会在Chrome中产生此错误;
未捕获的SyntaxError:意外的令牌u
如果我删除复选框,表单提交时不会出现任何错误。如果我将其转换为非Ajax表单,它也会提交,但不幸的是,这不适用于页面设计。
我完全被这件事难住了——我甚至把它改成了RadioButton,同样的行为也存在。有人有什么想法吗?
编辑:忘记添加它是一个Javascript错误。
编辑:错误来自下面返回的jQuery库;
parseJSON:函数(数据){//尝试首先使用本地JSON解析器进行解析
if ( window.JSON && window.JSON.parse ) { return window.JSON.parse( data ); }
但只有当我使用RazorHTML助手来生成复选框时,才会发生这种情况。
我被这个问题困扰了,花了大约6个小时试图弄清楚问题是什么。根据Jquery开发人员的说法,这是1.9.1中的预期行为。如果你使用jQuery Migrate 1.1.1插件,除了控制台警告之外,一切都应该正常,我认为可以关闭
http://bugs.jquery.com/ticket/13412
请参阅错误报告,它实际上不是错误:)
jQuery 1.9.1似乎引入了一个错误。我已经降级到1.8.3,复选框的Razor助手现在可以正常工作了。如果有人感兴趣,可以采取降级措施;
卸载包jQuery-强制
安装包jQuery-1.8.3版