ajax请求前的c#mvc验证表单

ajax请求前的c#mvc验证表单,c#,ajax,asp.net-mvc,validation,C#,Ajax,Asp.net Mvc,Validation,在ajax请求之前,我尝试在页面/order/create上验证表单 @model rentcar2.Models.mOrderSnapshot ... <form id="order"> @Html.EditorFor(model => model.Fam) <form> .... $('#test').click(function () { if ($("#order").valid()) { alert(1); } els

在ajax请求之前,我尝试在页面/order/create上验证表单

@model rentcar2.Models.mOrderSnapshot
...
<form id="order">
   @Html.EditorFor(model => model.Fam)
<form>
....    
$('#test').click(function () {
   if ($("#order").valid()) {
      alert(1);
   } else { alert(2); }
   alert(3);
});
@model rentcar2.Models.mOrderSnapshot
...
@EditorFor(model=>model.Fam)
....    
$(“#测试”)。单击(函数(){
如果($(“#订单”).valid()){
警报(1);
}else{alert(2);}
警惕(3);
});
但是在警报1、3之后,我得到重定向到/order/create?fam=value(model.fam)


我只是想验证输入并显示无效,为什么要重定向?

使用preventDefault停止按钮执行默认操作

 $('#test').click(function (e) {
    e.preventDefault();
       if ($("#order").valid()) {
          alert(1);
       } else { alert(2); }
       alert(3);
    });

使用preventDefault停止按钮执行其默认操作

 $('#test').click(function (e) {
    e.preventDefault();
       if ($("#order").valid()) {
          alert(1);
       } else { alert(2); }
       alert(3);
    });

我建议您使用非结构化的
jQuery.validate
plugin。这是进行表单客户端验证的最佳方法,它包含在默认的
MVC.net应用程序中。这是一个例子:

@model rentcar2.Models.mOrderSnapshot
@Scripts.Render("~/bundles/jqueryval")

@using (Ajax.BeginForm()) {
    @Html.ValidationSummary(true)
    @Html.EditorFor(model => model.Fam)
    @Html.ValidationMessageFor(model => model.Fam)
    <input type="submit" value="Submit" />
}
有许多可用的
dataannotation
,您也可以自己创建它们,请访问web

如果您想了解有关非结构化jQuery验证的更多信息,请访问:

编辑:您还可以使用以下方法手动触发验证过程:

$('#myForm').valid();
对于指定的元素:

$('#myForm').validate().element("#Fam");

来源:

我建议您使用非结构化的
jQuery。验证
插件。这是进行表单客户端验证的最佳方法,它包含在默认的
MVC.net应用程序中。这是一个例子:

@model rentcar2.Models.mOrderSnapshot
@Scripts.Render("~/bundles/jqueryval")

@using (Ajax.BeginForm()) {
    @Html.ValidationSummary(true)
    @Html.EditorFor(model => model.Fam)
    @Html.ValidationMessageFor(model => model.Fam)
    <input type="submit" value="Submit" />
}
有许多可用的
dataannotation
,您也可以自己创建它们,请访问web

如果您想了解有关非结构化jQuery验证的更多信息,请访问:

编辑:您还可以使用以下方法手动触发验证过程:

$('#myForm').valid();
对于指定的元素:

$('#myForm').validate().element("#Fam");

来源:

为什么不使用
jQuery.validate
?默认值是否包含在MVC应用程序中?如何包含?我如何在需要时启动验证过程?您的元素是什么?
id=“test”
-您没有取消其默认操作!如果您收到
警报(1)
,那么这意味着它是有效的,那么为什么您希望“显示无效”(这是什么意思)?为什么不使用
jQuery.validate
?默认值是否包含在MVC应用程序中?如何包含?我如何在需要时启动验证过程?您的元素是什么?
id=“test”
-您没有取消其默认操作!如果您收到
警报(1)
,则表示其有效,那么为什么您希望“显示无效”(您的意思是什么)?我如何在不提交的情况下启动验证过程?我更新了答案,但尝试提出一个更清楚的问题,说明您的真正需要您从未调用
验证()
如果使用
jquery.validate.unobtrusive.js
@StephenMuecke为什么?因为插件已经初始化了。如果您想测试表单是否有效,那么您可以使用
If($('form').valid(){…
如何在不提交的情况下启动验证过程?我更新了答案,但尝试提出一个更清楚的问题,说明您真正的需要您从未调用
validate()
如果使用
jquery.validate.unobtrusive.js
@StephenMuecke为什么?因为插件已经初始化了它。如果要测试表单是否有效,则使用
if($('form').valid()){…