【发布时间】:2012-12-09 22:57:30
【问题描述】:
我有这样的简单 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可以工作吗?如何将验证问题转发回客户端并将其呈现为好像我使用构建 int 验证(
@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>
【问题讨论】:
-
下面的答案很好。这是一个相关的问题。答案允许客户端或服务器端验证。我爱上了他们提供的 JQuery 代码。 (不,这不是我的答案。)stackoverflow.com/questions/28987752/…
标签: jquery ajax asp.net-mvc validation