MVC3に付属する目立たない検証を利用して、jQuery Mobile (Alpha 3)ベースのASP.NET MVC 3アプリケーションを作成しています。ページが直接アクセスされる (URL にハッシュがない) 場合、検証は完全に機能します。ただし、ページに移動すると、jQuery Mobile は Ajax ナビゲーションを使用してページを動的に読み込み (URL にハッシュを表示)、検証が機能しなくなります。
使用中のコードのサンプルを次に示します。
モデル:
[Required(ErrorMessage = "Missing value")]
[DisplayName("Property Display Name")]
public int? PropertyName { get; set; }
ビュー (かみそり):
@Html.LabelFor(model => model.PropertyName)
@Html.TextBoxFor(model => model.PropertyName)
@Html.ValidationMessageFor(model => model.PropertyName)
生成された HTML:
<label for="PropertyName">Property Display Name</label>
<input data-val="true" data-val-number="The field Property Display Name must be a number." data-val-required="Missing value" id="PropertyName" name="PropertyName" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="PropertyName" data-valmsg-replace="true"></span>
他のページが以前にロードされていて、HTML 要素に一意の ID がなくなっている可能性があります。独自の Html ヘルパー クラスを展開して、Label、TextBox、および ValidationMessage の HTML を生成する以外に、このシナリオを処理する方法はありますか?