我有我的應用程序下面的路由...路線與GetVirtualPath
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Branding",
"foo/bar.css",
new { controller = "DynamicContent", action = "CSS" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
}
我使用Martijn Boland's paging mechanism並最終使下面的調用:
var virtualPathData =
RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, pageLinkValueDictionary);
我已經驗證我的控制器和RequestContext中的操作是有效的。但是一旦這個調用完成,virtualPathData引用foo/bar.css的URL。我已驗證URL映射到正確的控制器/操作。如果我將上面的路由註釋掉,默認情況下,virtualPathData的URL對應於正確的控制器/操作。
我也試過下面這一行,結果也一樣。
//var virtualPathData =
RouteTable.Routes.GetVirtualPathForArea(this.viewContext.RequestContext, pageLinkValueDictionary);
任何人都可以幫我弄清楚我做錯了什麼嗎?
感謝菲爾,它的工作原理比我的建議更清潔(回想起來很像雙重否定) - 我很感激! – Mayo 2010-10-23 03:16:15