我有一個運行在.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" });
}
從我希望通過這種途徑來生成一個鏈接我的Razor視圖代碼,所以我這樣做:
RouteValueDictionary rd = new RouteValueDictionary(this.Url.RequestContext.RouteData.Values);
rd["fooId" ] = "123";
rd["fooRevision"] = "4";
this.Url.RouteUrl("Foo_Bar", rd);
但是,這返回null。沒有例外。沒有其他副作用。
調試器顯示rd
包含5個命名值:tenantName
,controller
,action
,fooId
和fooRevision
。我還在調試過程中添加了area
,以確保它仍然返回null。
我證實路由存在,因爲this.Url.RouteCollection["Foo_Bar"]
返回對應於該路由的System.Web.Routing.Route
對象。
我試過.NET Source Stepping,並且我能夠將1級別升級到UrlHelper
,但是進入GenerateUrl
函數失敗,Visual Studio 2015 U2總是對其執行操作。
即使當我提供e是字典中顯式的'tenantName',它仍然返回null。這很奇怪。 – Dai