Asp.net mvc 通过AJAX调用action方法引发异常以返回视图

Asp.net mvc 通过AJAX调用action方法引发异常以返回视图,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,当我对控制器执行AJAX请求时,Action方法无法找到我试图返回的视图,并引发异常,如问题末尾所示 以下是调用Action方法的AJAX方法: $.ajax({ url: "/Courses/AddTime", data: { DayName: DayValue, StartTimeValue: starttimeval,EndTimeValue: EndtimeVal }, da

当我对控制器执行AJAX请求时,Action方法无法找到我试图返回的视图,并引发异常,如问题末尾所示

以下是调用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方法,它是从AJAX请求中正确调用的,但在返回视图时抛出异常

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

    }
未找到视图“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
您的视图丢失了

 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) =========
 } 
因此Viewmodel希望找到listbatch.cshtml,但可能无法找到,因为它丢失了,并且您收到了错误消息

您需要创建/Views/Courses/listbatch.cshtml
查看“视图”文件夹,看看它是否在那里…

我也遇到了同样的问题,在花了2天时间后找到了解决方案。 而不是使用 window.location.href='/Courses/listbatch/?BtchTimingid='+ data.ID+&InsertRetId=+data.secndid; 我建议你使用 window.location.href='@Html.RawUrl.Actionlistbatch,课程,新{BtchTimingid=data.ID,InsertRetId=data.secndid}


如果您在没有@Html.Raw的情况下使用它,您的URL将有&而不是&for参数,它应该不会引起任何问题,但我不知道为什么它会对我造成问题,并导致与您相同的问题,即未找到视图。。。所以也要使用Html.Raw。

你能试着重写这个问题吗?这里的英语很难理解…通过Json方法调用Action并传递参数,但在调用Action时,我创建了视图的相同名称。问题是,视图不是调用,这会产生错误。@amitkumar您的AJAX方法发布到url:/Courses/AddTime,但您向我们展示了Action方法的代码:listbatch?最好发布正确的AJAX调用或正确的操作方法,以了解出了什么问题。可能重复了为什么在想要重定向时要进行AJAX调用,这是毫无意义的。正常提交。错误是显而易见的——您重定向到listbatch并调用ReturnViewModel,它希望您拥有一个名为listbatch.cshtml的视图。如果需要其他视图,请指定视图名称。public JsonResult AddTimeCoursesModel、string DayName、string StartTimeValue、string EndTimeValue{var resultsss=new{ID=EditBatchTimingId、secndid=retID};return Jsonresultsss、JsonRequestBehavior.AllowGet;}//,在上面,我向您发送了json请求,该请求正在通过控制器传递,之后,我传递了windows.location值,但我的视图页面未打开。请转到该控制器,但仍然会得到ErrorYes。问题是缺少您的视图。在/Views/Courses/listbatch.cshtml创建一个视图,然后再试一次。伙计,我想你不明白…我已经告诉你listbatch.cshtml已经创建了,我正在通过Ajax调用该操作。检查位置和文件名拼写。当您收到错误消息时,表示文件不存在。Thanx很多朋友,您的工作性能非常好…您只是我无法表达我的意思…3天后,您的解决方案将成功…但是,朋友,一个问题是我无法传递参数,因为它说数据在当前上下文中不存在。。。
 window.location.href = '/Courses/listbatch/?BtchTimingid=' + 
                        data.ID + "&InsertRetId=" + data.secndid;