.NET 4.6.1で動作するASP.NET MVC 5 Webアプリケーションがあります。UrlHelper.RouteUrl(routeName、RouteValueDictionary)がNULLを返します。
私は「フー」と呼ばれる自分のアプリケーション内の領域を持っているし、私の地域登録に私はそうのような名前のルートを追加:私はこのルートを使ってリンクを生成したい私のかみそりビューコードから
RegisterArea(AreaRegistrationContext context) {
context.MapRoute("Foo_Bar", "{tenantName}/foo/{fooId}/{fooRevision}", new { controller = "Foo", action = "Index" });
}
を、だから私は:
RouteValueDictionary rd = new RouteValueDictionary(this.Url.RequestContext.RouteData.Values);
rd["fooId" ] = "123";
rd["fooRevision"] = "4";
this.Url.RouteUrl("Foo_Bar", rd);
しかし、これはnullを返します。例外なし。その他の副作用はありません。 tenantName
、controller
、action
、fooId
、およびfooRevision
:
デバッガはrd
は5名前付きの値が含まれていることを示しています。デバッグ中にarea
も追加しましたが、それでもまだnullが返されます。
this.Url.RouteCollection["Foo_Bar"]
がそのルートに対応するSystem.Web.Routing.Route
オブジェクトを返すので、ルートが存在することを確認しました。
.NETソースステッピングを試してみましたが、UrlHelper
にステップ1まで進んだのに、GenerateUrl
関数に入るとVisual Studio 2015 U2が常に失敗します。
辞書内の明示的な 'tenantName'は、それでもnullを返します。これは奇妙です。 – Dai