C# 在Html.Action帮助程序中指示路由名称

C# 在Html.Action帮助程序中指示路由名称,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,是否可以在Html.Action中以某种方式显示routeName 像这样的 Html.Action("Languages", "UIHelper", new {routeName="Default"}); 目前,我的应用程序有很多区域,主布局中使用了Html.Action。当我将用户重定向到区域页面时,我的Html.Action无法找到操作/控制器,因为mvc试图在当前(重定向)区域中找到它没有使用路由名称的Html.Action()扩展方法。当然,您可以创建自己的扩展方法,以满足您的需要,

是否可以在Html.Action中以某种方式显示routeName 像这样的

Html.Action("Languages", "UIHelper", new {routeName="Default"});

目前,我的应用程序有很多区域,主布局中使用了
Html.Action
。当我将用户重定向到区域页面时,我的
Html.Action
无法找到操作/控制器,因为mvc试图在当前(重定向)区域中找到它没有使用路由名称的
Html.Action()
扩展方法。当然,您可以创建自己的扩展方法,以满足您的需要,我建议您这样做是一个很好的练习,但在您的情况下,解决方案可能会简单得多

默认情况下,所有管线都使用当前区域进行匹配。您可以通过提供面积参数来替代面积,如下所示:

@Html.ActionLink("MyLink",  "MyAction", new {Area = "MyArea" });
在您的例子中,您希望在根区域中使用一个控制器,它只是表示为一个空白字符串。因此,您需要做的就是:

@Html.Action("Languages", "UIHelper", new { Area = "" });

在您的示例中,您没有指定区域,但在问题中提到了区域。在您的示例中,这只是一个过于简单的问题吗?您不能改用RouteLink或扩展您的Html.Action以获得该功能吗?第二种方法符合我的期望。谢谢你@Jacek