2

ブール値の CheckBox を含む部分ビューに Ajax.BeginForm() があります。モデルは次のとおりです。

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: 予期しないトークン 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 -バージョン 1.8.3

于 2013-02-18T11:22:57.150 に答える