所以我在这里看到this question这个,但它并没有真正解决这个问题给我。ASP.NET MVC 3 + Razor错误:不允许子动作执行重定向动作
我有一个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线,页面将呈现。然后,将打破,如果我做一个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);
}
如果这是不正确的,我怎么重定向到一个错误页面或规定在获取返回什么看法张贴?任何帮助表示赞赏。谢谢。
因此,假设重定向都发生在服务器上,它只是发回新页面的HTML是错误的吗?我不想实际重定向页面,只是执行不同的操作并发回不同的视图。 – IronicMuffin 2011-04-13 15:55:06
那么,从控制器重定向都在服务器上,问题是你从一个子动作或AJAX调用重定向 - 在这两种情况下,页面的一部分已经存在,并且你不能只在页面中间。 – 2011-04-13 15:59:09
我想我不会效仿。我想我要么获取原始视图的HTML或新的视图的HTML呈现到页面。我看不出问题在哪里。我想我会回发JavaScript的部分?如何根据服务器端发生的情况选择要加载的部分? – IronicMuffin 2011-04-13 16:04:32