【发布时间】:2014-03-25 14:35:44
【问题描述】:
我的视图中有一个 ajax 表单
@using (Ajax.BeginForm("AttendeeAvailability", "Response", new AjaxOptions { HttpMethod = "POST", OnSuccess = "done" }))
{
@Html.ValidationSummary(true)
....
//some stuff
....
}
<script type="text/javascript">
function done() {
//do something;
}
</script>
这里是控制器的post方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AttendeeAvailability(AttendeeAvailableDateTime response)
{
....
....
if (somecheck1)
{
ModelState.AddModelError(string.Empty,"Check error1");
return View();
}
if (doesTimeExists2)
{
ModelState.AddModelError(string.Empty,"Check error2");
return View();
}
//do some database actions
return View();
}
目前我没有收到任何在控制器中设置的 Modelstate 错误消息。
我猜是因为当控制器中的任务成功完成时,它会调用我看到的 done 函数。
在这种情况下,我如何发送一些错误并将它们显示为 Modelstate 错误?
【问题讨论】:
-
一个 AJAX 请求(也意味着提交)返回浏览器可能用来更新部分文档的数据(它可以刷新整个文档,但这是完全不同的故事)。您的页面没有完全刷新。这意味着您无权访问
ModelState。我的意思是,你有,但它是原始的,用于“干净”页面。如果您将Ajax.BeginForm更改为“常规”表单,您的网页将完全刷新,您将获得ModelState。 -
那么我怎样才能发送一些错误信息并显示它们呢?有什么办法吗?
-
您可以发回一个 Json 对象/字符串,并且进程在
done()函数中。 -
您能否指导我了解我的完成功能如何作为答案。我对此没有太多经验
标签: jquery ajax asp.net-mvc asp.net-ajax