[英]Ajax.BeginForm add ModelSstate error sent from controller?
在我看來,我有一個 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 錯誤?
更改表單調用頭(給done
函數添加一個參數):
@using (Ajax.BeginForm("AttendeeAvailability", "Response",
new AjaxOptions { HttpMethod = "POST", OnSuccess = "done(data)" }))
...和 JavaScript:
<script type="text/javascript">
function done(data) {
//do something with the data
}
</script>
您的data
外觀完全取決於您在操作中的結構方式:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult AttendeeAvailability(AttendeeAvailableDateTime response)
{
....
....
if (somecheck1)
{
//ModelState.AddModelError(string.Empty,"Check error1");
return Json(new { error = "Check error1" }, JsonRequestBehavior.AllowGet);
}
if (doesTimeExists2)
{
//ModelState.AddModelError(string.Empty,"Check error2");
return Json(new { error = "Check error2" }, JsonRequestBehavior.AllowGet);
}
//do some database actions
return Json(new { success = "Success" }, JsonRequestBehavior.AllowGet);
}
在此之后,您可以通過解析來訪問數據:
<script type="text/javascript">
function done(data) {
var confirmation = data;
if (confirmation["success"] != undefined) {
alert(confirmation["success"]);
}
else if (confirmation["error"] != undefined) {
alert(confirmation["error"]);
}
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.