必須フィールドを持つモデルで部分ビューを最初にレンダリングするプライマリ ビューを読み込んでいます。ご想像のとおり、クライアント検証は最初のパーシャルで機能しますが、AJAX を使用して同じパーシャル ビューを動的にレンダリングすると、クライアント検証は動的に追加されたフィールドを一意として認識できません。
結局のところ、それらは同じ名前、ID、および検証データダッシュ属性を持っていますが、クライアント検証メッセージを取得して、スクリプトでクライアント検証を手動でチェックして適用することなく、各フィールドを個別に認識する方法があるため、これに驚かないでください?
プライマリ ビュー:
@{Html.EnableClientValidation(); }
@{using (Html.BeginForm()){
@Html.Partial("_WorkItem")
<div id="newItemHolder">
</div>
<div id="addItem">Add Item</div>
}}
<script type="text/javascript">
$(document).ready(function () {
$("#addItem").click(function () {
$.ajax({
type: "POST",
data: {},
url: "Controller/NewItem",
success: function (data) {
//inject partial views content to newItemHolder
jQuery.validator.unobtrusive.parse($("#newItemHolder"));
}
});
});
});
</script>