我正在使用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");
答案 0 :(得分:1)
您收到的错误消息说明了一切。您无法在那里执行重定向。实际上,插件配置操作是使用子操作调用的,因此通常使用[ChildActionOnly]属性进行修饰。您可以在此答案Why are Redirect Results not allowed in Child Actions in Asp.net MVC 2找到更详细的消息。
您应该重构代码以从其他位置调用重定向,例如主操作或应用于主操作的自定义操作过滤器。
但是,由于调用您的Configure操作的代码不受您的控制,因为它属于nopCommerce,而不属于您的插件,因此最好的方法是动态注入自定义操作过滤器并在那里执行重定向。