我正在尝试从 asp.net mvc 中的子操作的上下文中锻炼当前路由的 url。
为此,我正在使用:
Url.RouteUrl(ControllerContext.ParentActionViewContext.RouteData.Values)
这很好,期望它不考虑区域。如何扩展以考虑当前区域路由?
我正在尝试从 asp.net mvc 中的子操作的上下文中锻炼当前路由的 url。
为此,我正在使用:
Url.RouteUrl(ControllerContext.ParentActionViewContext.RouteData.Values)
这很好,期望它不考虑区域。如何扩展以考虑当前区域路由?
好的,这就是我最后所做的。本质上,我检查当前操作是否有一个区域,然后将其添加到我传递给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;