如何解决ASP.NET MVC 3 + Razor错误:子操作不允许执行重定向操作
|| 所以我在SO上看到了这个问题,但是它并没有真正为我解决这个问题。 我有一个ASP.NET MVC 3 + Razor应用程序在我的开发PC的IIS5上运行,然后在我的开发Web服务器的IIS6上运行。在我部署之前,一切工作都很好。我正在bin部署所有内容,在那方面没有任何问题(我可以告诉)。 现在,我收到了这个子操作,不允许在我的页面上执行重定向操作错误。我不确定如何确定失败的地方。 我正在使用@ Html.Action插入一些带有数据的下拉框: public ActionResult Hierarchy()
{
List<Store> storeList = DBService.getStores();
if (DBService.Error != null)
return RedirectToError(DBService.Error);
List<Department> deptList = DBService.getDepts();
if (DBService.Error != null)
return RedirectToError(DBService.Error);
VM_Hierarchy hierarchy = new VM_Hierarchy(storeList,deptList);
return View(hierarchy);
}
如果我删除@ Html.Action行,则页面将呈现。如果我对这样的控制器操作发出AJAX请求,则它将中断:
[HttpPost]
public ActionResult InventoryList(string fromDate,string toDate)
{
List<Inventory> inventories = DBService.getInventories(fromDate,toDate);
if (DBService.Error != null)
return RedirectToAction(\"Error\");
return View(inventories);
}
如果这不正确,我应该如何重定向到错误页面或指示在帖子上返回什么视图?任何帮助表示赞赏。谢谢。
解决方法
这可能是因为在部署数据库服务时,您正在从数据库服务中获取错误,而您并未在本地获取错误。这导致它尝试从子操作中重定向,而您不能这样做。
您可能希望尝试在主操作中获取下拉数据,然后将其全部放入ViewModel中,这样就不会使用子操作。如果失败,则可以重定向到您的心脏内容。对于AJAX,您需要处理客户端上的错误并做一些明智的事情,您不能仅从AJAX调用返回重定向。
这个问题有更多信息:
为什么在Asp.net MVC 2的子操作中不允许重定向结果
,如果您采取儿童行动
(ControllerContext.ParentActionViewContext.Controller as System.Web.Mvc.Controller).Response.Redirect(Url.Action(\"Action\",\"Controller\"));
它将从子操作中重定向。
,我有一个类似的问题,但是对于我自己的一生,我无法弄清楚重定向的来源。一旦弄清楚了,我想我会发布一个答案,以防其他任何人碰到。
如果从命令式代码中看不到重定向的来源,例如:
[AuthoriseThis]
public ActionResult Details(SomethingModel something)
{
return PartialView(something);
}
看一下声明性代码!
在我的情况下,这是一个授权问题,因此该属性导致了重定向,而我的眼睛过滤掉了该属性的存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。