Ajax.BeginForm()带有复选框语法错误

本文关键字:复选框 语法 错误 BeginForm Ajax | 更新日期: 2023-09-27 17:59:43

我在局部视图中有一个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助手来生成复选框时,才会发生这种情况。

Ajax.BeginForm()带有复选框语法错误

我被这个问题困扰了,花了大约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版