当我向控制器发出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);
}
未找到视图'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
答案 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。