我在發出ajaxRequest後出現「目標窗體」上出現「必填字段」驗證消息時出現問題。MVC3 ajax驗證 - 首次顯示部分視圖時顯示的錯誤消息
我在表單中執行ajaxRequest命令,允許在不同的表單中呈現局部視圖(兩個表單在同一頁上,實際上是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渲染(也注意,準備,因爲形式是動態加載的,我重裝不顯眼的驗證)
@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.mi n.js在我的佈局 - 在ScriptRegistrar內,我已經嘗試了jQuery和jQueryValidation設置爲true和false
<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。
我遇到的問題是當第一次出現局部視圖時,窗體上的所有必填字段都顯示「...必填字段」錯誤消息(不管該字段是否包含值)。如果我用上面的'Required'屬性排除部分類,錯誤消息就會消失,但是我沒有得到客戶端驗證(因此我可以在非空字段中輸入空格)
有沒有人有解決方案?