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;