ブール値の 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 ヘルパーを使用してチェックボックスを生成した場合にのみ発生します。