如何从MVC3中的ChildAction中找到区域中当前Action的url?

时间:2012-07-19 09:34:24

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我正在尝试从asp.net mvc中的子操作上下文中查找当前路径的URL。

为此我正在使用:

Url.RouteUrl(ControllerContext.ParentActionViewContext.RouteData.Values)

这很好,期望它不考虑区域。如何扩展以考虑当前的区域路由?

1 个答案:

答案 0 :(得分:0)

好的,这就是我最后所做的。基本上我检查当前操作是否有一个区域,然后将其添加到我传递给RouteUrl调用的字典中。

var context = ControllerContext.ParentActionViewContext;

var routeValueDict = new RouteValueDictionary();

foreach (var value in context.RouteData.Values)
{
    routeValueDict.Add(value.Key, value.Value);
}

var area = context.RouteData.DataTokens["area"];
if (area != null)
{
    routeValueDict.Add("area", area);
}

var url = Url.RouteUrl(routeValueDict);
return url;