2015-07-12 34 views
2

如何避免讓「/」(根路徑),我想如家/索引的完整路徑(如我的默認路由)?如何得到充分的默認路由的網址?

var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; 
if (redirectTo.Equals("/")) 
{ 
VirtualPathData vp = RouteTable.Routes.GetVirtualPath(htmlHelper.ViewContext.RequestContext, "Default", new RouteValueDictionary(new { controller = "Admin", action = "Index" })); 
redirectTo = vp.VirtualPath; 
} 

UrlHelper u = new UrlHelper(htmlHelper.ViewContext.RequestContext);; 
    redirectTo = u.RouteUrl("Default", ((Route)RouteTable.Routes["Default"]).Defaults); 

但所有上述不工作。謝謝!

+0

沒有看到你的路由表,很難說是什麼問題(以及爲何要使用這樣的代碼,而不是Url.Action和類似幫手... –

+0

你是問你如何讓路由到如果只工作我們指明完整路徑(家庭/索引),而不是僅僅根路徑(「/」)? –

回答

2

此代碼可以以被用來獲得在一般情況下的默認路徑:

var route = ((Route)RouteTable.Routes["Default"]).Defaults; 
var url = string.Format("/{0}/{1}", route["controller"], route["action"]); 

在特殊RouteMaps格式字符串(/ {0}/{1})應更改的情況下。