我有一个简单的ASP.NET MVC操作,如下所示:
public ActionResult Edit(EditPostViewModel data)
{
}
EditPostViewModel
有像这样的验证属性:
[Display(Name = "...", Description = "...")]
[StringLength(100, MinimumLength = 3, ErrorMessage = "...")]
[Required()]
public string Title { get; set; }
我正在使用以下辅助程序:
@Html.LabelFor(Model => Model.EditPostViewModel.Title, true)
@Html.TextBoxFor(Model => Model.EditPostViewModel.Title,
new { @class = "tb1", @Style = "width:400px;" })
如果我在包含此文本框的表单上执行提交,将首先对客户端进行验证,然后再对服务端(ModelState.IsValid
)进行验证。
现在我有几个问题:
是否可以与jQuery ajax提交一起使用? 我所做的只是删除表单,在单击提交按钮时,javascript将收集数据,然后运行
$.ajax
。服务器端的
ModelState.IsValid
会起作用吗?如何将验证问题转发回客户端,并呈现为使用内置验证(
@Html.ValidationSummary(true)
)?
Ajax调用示例:
function SendPost(actionPath) {
$.ajax({
url: actionPath,
type: 'POST',
dataType: 'json',
data:
{
Text: $('#EditPostViewModel_Text').val(),
Title: $('#EditPostViewModel_Title').val()
},
success: function (data) {
alert('success');
},
error: function () {
alert('error');
}
});
}
编辑 1:
包括在页面中:
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>