我在发出 ajaxRequest 后出现目标表单上出现的“必填字段”验证消息时遇到问题。
我正在从表单中执行 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 进行渲染(还请注意,在 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。
我遇到的问题是,当部分视图首次出现时,表单上的所有必填字段都会显示“...必填字段”错误消息(无论该字段是否包含值)。如果我排除具有上述“必需”属性的部分类,错误消息会消失,但我没有得到客户端验证(因此我可以在不可为空的字段中输入空白)
有人对此有解决方案吗?