所以我看到了this question在这里,但它并没有真正为我解决这个问题。
我有一个 ASP.NET MVC 3 + Razor 应用程序在我的开发电脑上的 IIS5 上运行,然后在我的开发 Web 服务器上运行 IIS6。在我部署它之前一切都很好。我正在部署所有内容,这方面没有任何问题(据我所知)。
现在我在我的页面上收到此不允许子操作执行重定向操作错误。我不确定如何查明失败的地方。
我正在使用@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 行,页面将呈现。如果我向这样的 Controller 操作发出 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);
}
如果这不正确,我应该如何重定向到错误页面或指示在帖子中返回什么 View ?任何帮助表示赞赏。谢谢。
最佳答案
这可能是因为您在部署数据库服务时收到了错误,而您并没有在本地收到错误。这会导致它尝试从子操作重定向,这是您无法做到的。
您可能想尝试在主操作中获取下拉数据,并将其全部放在 ViewModel 中,这样您就不会使用子操作。如果失败,您可以重定向到您想要的内容。对于 AJAX,您需要处理客户端的错误并做一些明智的事情,您不能只从 AJAX 调用返回重定向。
这个问题有一些进一步的信息: Why are Redirect Results not allowed in Child Actions in Asp.net MVC 2
关于c# - ASP.NET MVC 3 + Razor 错误 : Child actions are not allowed to perform redirect actions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651956/