【发布时间】:2012-12-15 00:42:29
【问题描述】:
我有一个 ASP.NET MVC 4,我在其中使用带有验证属性的客户端和服务器端验证。
在使用 ajax 发送表单之前,将正确验证表单,如下所示:
function ValidateFormAndAjaxSubmit(formId, callingElement) {
if (IsNotDblClick(callingElement.id)) {
var _form = $("#" + formId);
var validator = _form.validate();
var anyError = false;
_form.find("input").each(function () {
if (!validator.element(this)) { // validate every input element inside this step
anyError = true;
}
});
if (anyError) {
window.latestClick = '';
return false; // exit if any error found
}
$.post(_form.attr("action"), _form.serialize(), function (data) {
if (data.Success) {
}
else {
}
alert("Win");
window.latestClick = '';
//check the result and do whatever you want
})
}
}
表格如下所示:
@using (Html.BeginForm("JEdit", "Post", FormMethod.Post, new { id = "frmEditPost" }))
{
@Html.ValidationSummary(true)
...
}
将在服务器端进行额外的验证,并将其存储在这样的返回类中:
public class JEditResult
{
public Boolean Success = false;
public string TitleErrMessage;
public string TextErrMessage;
public string LinkErrMessage;
public string TagErrMessage;
public string OtherErrMessage;
}
现在我需要将这些验证放入表单中,就好像它们已在客户端上进行了验证一样。我该怎么做?
【问题讨论】:
-
您是否在使用模型绑定并且是否已向模型添加了验证属性?您可能不希望像使用 JEditResult 创建的那样拥有自己的结果类。看起来您正在复制 MVC 内置的功能。您可以发布您的模型和操作方法的代码吗?
-
摆脱所有输入循环业务,只需使用valid()。另外仅供参考 - 它是“服务器”而不是“服务” - 就像网络 服务器。明白了吗?
-
@jesus.tesh 谢谢,工作正常,但如何处理返回验证的主要问题尚未解决。
标签: jquery ajax asp.net-mvc json validation