通过AJAX调用action方法抛出异常以返回视图

时间:2017-06-30 14:32:55

标签: asp.net-mvc model-view-controller

当我向控制器发出AJAX请求时,Action Method无法找到我想要返回的View并抛出异常,如问题末尾所示。

以下是调用Action方法的AJAX方法:

  $.ajax({
            url: "/Courses/AddTime",
            data: { DayName: DayValue, StartTimeValue: 
                   starttimeval,EndTimeValue: EndtimeVal },
           dataType: "json",
            type: "POST",
            error: function () {
                alert(" An error occurred.");
            },
            success: function (data) {
                window.location.href = '/Courses/listbatch/?BtchTimingid=' + 
                data.ID + "&InsertRetId=" + data.secndid;
            }
        });

以下是Action Method,它是从AJAX请求中正确调用的,但在返回View时它会抛出异常。

public ActionResult listbatch(string Search_name, int? page, int? 
BtchTimingid = 0, int InsertRetId=0)
    {
   /// There Have some code which is working perfect 


       if (Request.IsAjaxRequest())
            return PartialView("_BatchTimingList", model.pageCoursesList);
        else
             return View(model);

    }

Exception Screenshot

  

未找到视图'listbatch'或其主控或没有视图引擎   支持搜索的位置。以下地点是   搜寻:

    ~/Views/Courses/listbatch.aspx
    ~/Views/Courses/listbatch.ascx
    ~/Views/Shared/listbatch.aspx
    ~/Views/Shared/listbatch.ascx
    ~/Views/Courses/listbatch.cshtml
    ~/Views/Courses/listbatch.vbhtml
    ~/Views/Shared/listbatch.cshtml
    ~/Views/Shared/listbatch.vbhtml

2 个答案:

答案 0 :(得分:1)

您的观点不见了。

 public ActionResult listbatch(string Search_name, int? page, int? BtchTimingid = 0, int InsertRetId=0)
 {
     if (Request.IsAjaxRequest())
         return PartialView("_BatchTimingList", model.pageCoursesList);
     else
         return View(model);    // <======= HERE (not an AJAX request) =========
 } 

以下JavaScript不会生成Ajax请求,这是正常的GET。

 window.location.href = '/Courses/listbatch/?BtchTimingid=' + 
                        data.ID + "&InsertRetId=" + data.secndid;

所以View(model)期望找到listbatch.cshtml但不能(可能是因为它丢失了)并且您收到错误消息。

您需要创建/Views/Courses/listbatch.cshtml
看看Views文件夹,看看它是否存在......

答案 1 :(得分:0)

我遇到了同样的问题,并在花了2天后得到了解决方案。 而不是使用 window.location.href = '@Html.Raw(Url.Action("listbatch","Courses",new{BtchTimingid=data.ID, InsertRetId = data.secndid})) 我建议你用 while ((await responseStream.ReadAsync(streamReadBuffer, bufferLength, InputStreamOptions.None)).Length > 0 && !token.IsCancellationRequested)

如果您在没有@ Html.Raw的情况下使用它,您的网址将使用&amp; amp而不是&amp; amp;对于参数,它不应该导致任何问题,但我不知道它为什么它给我造成了同样的问题,你有i-e未找到视图...所以使用Html.Raw。