2

我在部分视图中有一个 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 中产生此错误;

Uncaught SyntaxError: Unexpected token u

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

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

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

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

parseJSON: function( data ) { // 尝试先使用原生 JSON 解析器进行解析

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

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

4

2 回答 2

2

我被这个咬了,花了大约 6 个小时试图找出问题所在。根据 Jquery 开发人员的说法,这是 1.9.1 中的预期行为。如果您使用 jQuery Migrate 1.1.1 插件,一切都应该正常工作,除了我认为可以关闭的控制台警告。

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

请参阅错误报告,这实际上不是错误:)

于 2013-02-22T11:29:53.313 回答
1

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

卸载包 jQuery -force

安装包 jQuery -version 1.8.3

于 2013-02-18T11:22:57.150 回答