私は自分のアプリで目立たないクライアント側の検証を有効にしました、そして私はこのモデルに(似たようなものを)持っています:
public class MyModel
{
[Required]
public string Name { get; set; }
[Range(0, 100)]
public int? Age { get; set; }
}
私は次の/ホーム/インデックスビューを持っています:
@model MyModel
@using (Html.BeginForm("Test", "Home"))
{
<div id="my-form">
@Html.Partial("Model")
</div>
<input type="submit" value="Go" />
}
部分的な「モデル」の場合:
@model MyModel
<div>
@Html.LabelFor(x => x.Name)
@Html.TextBoxFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)
</div>
<div>
@Html.LabelFor(x => x.Age)
@Html.TextBoxFor(x => x.Age)
@Html.ValidationMessageFor(x => x.Age)
</div>
すべてがおかしなことです、私は素晴らしい検証エラーメッセージを受け取ります。
ここで、フォーム/部分的な「モデル」を動的にロードします。つまり、@ Html.Partialをリモートにして、以下を追加します。
<a href="#" id="load-form">Load the form</a>
<script type="text/javascript">
$(function () {
$("#load-form").click(function () {
$.post(
"/Home/Test",
null,
function (result) {
$("#my-form").html(result);
$.validator.unobtrusive.parse($("#my-form"));
},
"html");
});
});
</script>
/ Home/Testは次のように単純です。return Partial("Model", new MyModel());
しかし、クライアント側の検証は機能しなくなり、返されたDOMとHTMLを見ると、データ属性はレンダリングされません。つまり、次のようになります。
/ Home / IndexのHtml.Partial()を使用
<div>
<label for="Name">Name</label>
<input data-val="true" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
</div>
<div>
<label for="Age">Age</label>
<input data-val="true" data-val-number="The field Age must be a number." data-val-range="The field Age must be between 0 and 100." data-val-range-max="100" data-val-range-min="0" id="Age" name="Age" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Age" data-valmsg-replace="true"></span>
</div>
XHR応答
<div>
<label for="Name">Name</label>
<input id="Name" name="Name" type="text" value="" />
</div>
<div>
<label for="Age">Age</label>
<input id="Age" name="Age" type="text" value="" />
</div>
部分ビューに明示的に追加してもHtml.EnableClientValidation();
、Html.EnableUnobtrusiveJavaScript();
検証はレンダリングされません。
AJAXで検証属性とメッセージを部分的にレンダリングするにはどうすればよいですか?または、他に何が間違っている可能性がありますか?