c# - ASP.NET MVC 3 + Razor 错误 : Child actions are not allowed to perform redirect actions

标签 c# asp.net ajax asp.net-mvc-3 razor

所以我看到了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/

相关文章:

c# - 执行 Lucene 搜索查询 "Contains"

javascript - 使用javascript填充第二页的文本框

javascript - 使用 AJAX 响应作为函数外部的 var

jQuery ajax 数据两个变量

c# - 如何计算MVC中执行 Action 的耗时

c# - 在 ASP.Net 中编写重定向到 SSL 页面的最佳方法是什么

c# - 使用继承自 IdentityDbContext 的上下文对 Entity Framework 6 进行单元测试

c# - 文件上传到服务器。我需要检查病毒吗?

java - 移动应用程序避免或保护 CORS?

c# - automapper 条件自定义值解析器