2011-01-10 79 views
1

我得到了以下路線:RouteTable.Routes.GetVirtualPath()返回錯誤路線在ASP.NET MVC

// pennames 
routes.MapRoute(
    "pennames", // Route name 
    "MyHome/Authors/{action}/{id}", // URL with parameters 
    new { controller = "Author", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

// article 
routes.MapRoute(
    "article", // Route name 
    "MyHome/Articles/{action}/{id}", // URL with parameters 
    new { controller = "Article", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

// index 
routes.MapRoute(
    "MyHome", // Route name 
    "MyHome/{action}/{id}", // URL with parameters 
    new { controller = "MyHome", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

我想分頁功能添加到我的「是MyHome /文章/」的說法。尋呼機使用下面的代碼來獲取URL:

var virtualPathData = RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, pageLinkValueDictionary); 

if (virtualPathData != null) 
{ 
    string linkFormat = "<a href=\"{0}\">{1}</a>"; 
    return String.Format(linkFormat, virtualPathData.VirtualPath, linkText); 
} 
else 
{ 
    return null; 
} 

的問題是,雖然,我從這個代碼「是MyHome /文章/」頁面GetVirtualPath總是返回第一條路線「是MyHome /作者/ 「,並完全忽略路線中的前綴」MyHome/Articles /「。

當我使用ActionLink它工作正常,而不是從GetVirtualPath

任何想法?

謝謝。

+1

你看過Route Debugger嗎? http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx這對了解如何處理路線非常有幫助。 – 2011-01-10 21:16:26

回答

0

如果你想申請分頁您是MyHome /文章

你可以給像

硬編碼路徑

yourpath = 「是MyHome /文章頁=?」 + PAGE_NUMBER;

並且每次您必須從該視圖使用該分頁助手可用於查看或使用<%= Html.ActionLink()%>並在此範圍內傳遞路由參數時接收頁面參數。