在使用 ASP.NET MVC 3 时,使用 Ajax 和 jQuery 处理表单提交时,我在客户端验证方面遇到问题。
检查模型在服务器端是否有效,但是以下代码片段不会触发客户端验证。
我错过了什么吗?
@model ViewModels.LeadDetailModelCore
@{using (Html.BeginForm("UpdateCore", "Leads", new { area = "Telesales" }, FormMethod.Post, new { id = "coreSave" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Lead_ID)
@Html.LabelFor(model => model.LeadStatus_ID)
@Html.DropDownListFor(model => model.LeadStatus_ID, new SelectList(Model.LeadStatuses, "LeadStatus_ID", "LeadStatus_Name"), "-- Please select a status --")
@Html.ValidationMessageFor(model => model.LeadSource_ID)
}}
<script type="text/javascript">
// NOTE ADD
$(function () {
$('#coreSave').die().live("submit", function (e) {
e.preventDefault();
var form = $(this);
var val = form.validate()
if (val.valid()) {
$("#ProgressDialog").dialog("open");
// post via ajax
}
return false;
});
});
</script>
最佳答案
确保您已包含正确的脚本:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
而你manually parse validation对于所有动态 DOM 元素。因此,每次更新 DOM 时,如果您最初加载页面时此表单不是 DOM 的一部分,则应该注册客户端验证:
$.validator.unobtrusive.parse($('#coreSave'));
您可能还会找到following answer对于使用带有部分 View 的 jQuery 对话框非常有用。
关于asp.net-mvc - 使用 Ajax/jQuery 提交 ASP.NET MVC 3 表单时的客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7785158/