Asp.net mvc 通过AJAX调用action方法引发异常以返回视图
当我对控制器执行AJAX请求时,Action方法无法找到我试图返回的视图,并引发异常,如问题末尾所示 以下是调用Action方法的AJAX方法: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({
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;