ajax post是否支持提交表单时的常规验证?
是
@using(Html.BeginForm()){
@Hml.ValidationSummary()
<input type="submit" value ="Save">
}
与
相同 @using(Html.BeginForm(new {id=FormTest})){
@Hml.ValidationSummary()
<input type="button" value= Save>
}
<script type="javascript">
$("#Save").click(function(){
$("#FormTest").submit();
});
</script>
答案 0 :(得分:1)
这里有很多错误的事情,我真的不知道从哪里开始。
您的Html.BeginForm
定义错误:您将routeValues
与htmlAttributes
混淆。请参阅下面的解决方案
您的按钮没有ID,因此您的javascript选择器很可能会失败
所有这些努力都不是必需的,因为一个简单的<input type="submit">
按钮开箱即用。
现在假设你不知何故你是javascript的粉丝,你想写它(我不知道你为什么要写代码但是无论如何)。首先修复表单定义:
@using(Html.BeginForm("someAction", "someController", FormMethod.Post, new { id = "FormTest" }))
{
@Html.ValidationSummary()
@Html.TextBoxFor(x => x.Foo)
<input type="button" value="Save" id="Save" />
}
然后你可以这样做:
$('#Save').click(function() {
var form = $('#FormTest');
if (form.valid()) {
form.submit();
}
});
显然,您必须确保在您的页面上正确包含客户端脚本:
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
当然,我建议您使用提交按钮提交表单的真正解决方案是:
@using(Html.BeginForm("someAction", "someController", FormMethod.Post, new { id = "FormTest" }))
{
@Html.ValidationSummary()
@Html.TextBoxFor(x => x.Foo)
<input type="submit" value="Save" id="Save" />
}
现在你不需要任何javascript(显然你仍然需要两个脚本包含来进行不引人注意的验证)。