0

asp.net mvc の子アクションのコンテキストから現在のルートの URL をワークアウトしようとしています。

これを行うには、次を使用しています:

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

これは問題ありません。ただし、領域は考慮されません。現在のエリアルーティングを考慮に入れるために、これをどのように拡張できますか?

4

1 に答える 1

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;
于 2012-07-19T10:39:56.863 に答える