簡體   English   中英

Ajax.BeginForm 添加從控制器發送的 ModelSstate 錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM