Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从控制器发送的Ajax.begin添加模型状态错误?_Jquery_Ajax_Asp.net Mvc_Asp.net Ajax - Fatal编程技术网

Jquery 从控制器发送的Ajax.begin添加模型状态错误?

Jquery 从控制器发送的Ajax.begin添加模型状态错误?,jquery,ajax,asp.net-mvc,asp.net-ajax,Jquery,Ajax,Asp.net Mvc,Asp.net Ajax,在我看来,我有一个ajax表单 @using (Ajax.BeginForm("AttendeeAvailability", "Response", new AjaxOptions { HttpMethod = "POST", OnSuccess = "done" })) { @Html.ValidationSummary(true) .... //some stuff .... } <script type="text/javascript">

在我看来,我有一个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>
目前,我没有收到在控制器中设置的任何Modelstate的错误消息

我猜是因为当controller中的任务成功完成时,它调用了我所看到的done函数


在这种情况下,如何发送一些错误并将其显示为Modelstate错误

更改表单调用头(向
done
函数添加一个参数):

…以及JavaScript:

<script type="text/javascript">
    function done(data) {
    //do something with the data
    }
</script>
接下来,您可以通过解析数据来访问数据:

<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>

功能完成(数据){
var确认=数据;
如果(确认[“成功”!=未定义){
警报(确认[“成功]);
}
否则如果(确认[“错误”]!=未定义){
警报(确认[“错误]);
}
}

AJAX请求(也就是提交)返回浏览器可能用于更新部分文档的数据(它可以刷新整个文档,但情况完全不同)。您的页面未完全刷新。这意味着您无权访问
ModelState
。我的意思是,你知道,但这是原版的,为了“干净”一页。如果将
Ajax.BeginForm
更改为“常规”表单,您的网页将完全刷新,您将获得
ModelState
。那么我如何发送一些错误消息并显示它们呢?有什么方法吗?你可以发回一个Json对象/字符串,进程在
done()
函数中。你能告诉我done函数的答案是什么吗。我对thathaha没有太多的经验,我实际上是指如何在通常显示ModelStateError时显示消息。这是
//对数据做点什么
,但不是nvm。可能是我没有正确地解释自己基本上,每个AJAX请求都会从服务器接收一些数据。您可以使用此数据来更新元素(
UpdateTargetId
)或传递您想要或需要的任何自定义数据/消息。因此,我可以在表单中设置一个div,并使用从controller right传递的消息从javascript函数更新该div内容。一旦你从服务器上取回数据,你可以对它做任何你想做的事情。在你的
返回Json(新的{error=“Check error2”,JsonRequestBehavior.AllowGet);
你是否丢失了
}
我一直试图放在不同的地方,但可能是因为我放错了地方,我在浏览器中遇到了控制台错误
<script type="text/javascript">
    function done(data) {
    //do something with the data
    }
</script>
[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>