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

时间:2013-02-18 01:20:31

标签: c# ajax razor asp.net-mvc-4 checkbox

我在局部视图中有一个Ajax.BeginForm(),其中包含一个bool值的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; }
}

使用Html帮助程序呈现CheckBox;

<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

如果我删除了CheckBox,表单提交时没有任何错误。如果我将其转换为非Ajax表单,它也会提交,但不幸的是,这不适用于页面设计。

我对此非常感到困惑 - 我甚至将其更改为RadioButton并且存在相同的行为。有没有人有任何想法?

编辑:忘记添加它是一个Javascript错误。

编辑:错误来自下面返回的jQuery库;

  

parseJSON:function(data){         //首先尝试使用本机JSON解析器进行解析

  if ( window.JSON && window.JSON.parse ) {
      return window.JSON.parse( data );
  }

但是只有在我使用Razor HTML帮助程序生成复选框时才会发生这种情况。

2 个答案:

答案 0 :(得分:2)

我对此感到厌烦并且大约花了6个小时试图找出问题所在。根据Jquery开发人员的说法,这是1.9.1中的预期行为。如果您使用jQuery Migrate 1.1.1插件,除了我认为可以关闭的控制台警告之外,一切都应该有效。

http://bugs.jquery.com/ticket/13412

查看错误报告,这实际上不是一个错误:)

答案 1 :(得分:1)

好吧,似乎jQuery 1.9.1引入了一个错误。我已经降级到1.8.3,而Checkbox的Razor助手现在可以正常工作了。如果有人有兴趣,降级的步骤;

  

卸载 - 打包jQuery -force

     

Install-Package jQuery -version 1.8.3