MVC路由返回错误:不允许子操作执行重定向操作

时间:2014-10-03 10:31:13

标签: asp.net-mvc nopcommerce

我正在使用nopCommmerce 3.40,MVC 5

我制作了插件并让路线成为行动的一条路线

但我得到的错误如下:

Error executing child request for handler'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.

Child actions are not allowed to perform redirect actions

我的代码

[AdminAuthorize]
    public ActionResult Configure()
    {

       return RedirectToRoute("PluginName.ActionName");
    }

    public ActionResult ActionName()
    {
       // i want to call/ return this  from Configure mathod
    }

RouteProvider

routes.MapRoute("PluginName.ActionName", "Admin/Plugins",
                     new { controller = "Controller", action = "Action" },
                     new[] { "PluginName.ActionName.Controllers" }
                     ).DataTokens.Add("area", "admin");

1 个答案:

答案 0 :(得分:1)

您收到的错误消息说明了一切。您无法在那里执行重定向。实际上,插件配置操作是使用子操作调用的,因此通常使用[ChildActionOnly]属性进行修饰。您可以在此答案Why are Redirect Results not allowed in Child Actions in Asp.net MVC 2找到更详细的消息。

您应该重构代码以从其他位置调用重定向,例如主操作或应用于主操作的自定义操作过滤器。

但是,由于调用您的Configure操作的代码不受您的控制,因为它属于nopCommerce,而不属于您的插件,因此最好的方法是动态注入自定义操作过滤器并在那里执行重定向。