ajaxRequest を発行した後にターゲット フォームが表示されるときに、「必須フィールド」検証メッセージがターゲット フォームに表示されるという問題があります。
フォーム内から ajaxRequest コマンドを実行して、部分ビューを別のフォーム内でレンダリングできるようにしています (2 つのフォームは同じページにあり、実際には Telerik スプリッターのペインです)。
// note "MyAjaxCall is passed (below) so that I can populate
// the partial view with the model data
splitter.ajaxRequest(".t-pane:last", "/HierarchyMember/Edit/" + hierarchyId, {requestType: "MyAjaxCall" });
私のコントローラーは単に適切なモデル データを取得し、部分的なビューを返します
return PartialView(hierarchyMemberRepository.Find(hierarchyMember.Id);
次に、部分ビュー (「編集」という名前) 内で、Ajax.BeginForm を介してレンダリングします (フォームが動的に読み込まれるため、Ready では目立たない検証をリロードしていることにも注意してください)。
@using (Ajax.BeginForm("Edit"
, "HierarchyMember"
, new AjaxOptions { OnBegin = "ajaxOnBegin", OnFailure = "ajaxOnFailure()"
, HttpMethod = "Post", InsertionMode = InsertionMode.Replace
, OnSuccess = "ajaxOnSuccess(data, $('#submitButtonClicked')[0].value)"
, OnComplete = "ajaxOnComplete" }
, new { id = "editForm", name = "editForm" }))
{
@Html.ValidationSummary(false)
...
}
<script...>
$(document).ready(function () {
var form = $("#editForm");
// for validation
form.removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
});
</script>
したがって、レイアウトにjquery.validate.min.js、jquery.unobtrusive-ajax.min.js、jquery.validate.unobtrusive.min.jsを含めています-ScriptRegistrar内で、jQueryとjQueryValidationの設定をtrueにしてみました間違い
<script src="@Url.Content("~/Scripts/2012.1.419/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
...
@(Html.Telerik().ScriptRegistrar().jQuery(false).jQueryValidation(false).DefaultGroup(group => group.Combined(true).Compress(true)))
必須フィールドを強制するために、次のように EntityFramework の生成されたモデル クラスを拡張する部分クラスがあります。
[Required()]
public object HierarchyId;
[Required()]
public object HierarchyDescription;
SQL Server の上記のフィールドは両方とも NOT NULL として定義されていることに注意してください (Entity Framework (4.1) 内では、プロパティ属性内の IsNullable フラグは false です。
私が抱えている問題は、部分ビューが最初に表示されたときに、フォームのすべての必須フィールドに「...必須フィールド」エラーメッセージが表示されることです (フィールドに値が含まれているかどうかに関係なく)。上記の「必須」属性を持つ部分クラスを除外すると、エラー メッセージは消えますが、クライアント側の検証は行われません (したがって、null 非許容フィールドに空白を入力できます)。
誰かがこれに対する解決策を持っていますか?