我正在關注Martijn Boland's 'Paging with ASP.NET MVC'。儘管有幫助,但卻引發了一些我不明白的問題。在ASP.Net中尋呼和路由MVC
馬亭說:
內部,尋呼機使用 RouteTable.Routes.GetVirtualPath()來渲染 URL的所以頁面的URL即可 通過路由被配置爲創建 好看的URL例如像 '/ Categories/Shoes/Page/1''而不是 '/ Paging/ViewByCategory?name = Shoes & page = 1'。
這是是他在談論:
private string GeneratePageLink(string linkText, int pageNumber)
{
var pageLinkValueDictionary = new RouteValueDictionary(this.linkWithoutPageValuesDictionary);
pageLinkValueDictionary.Add("page", pageNumber);
//var virtualPathData = this.viewContext.RouteData.Route.GetVirtualPath(this.viewContext, pageLinkValueDictionary);
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;
}
}
這是如何工作的?當我使用它的時候,virtualPathData.VirtualPath只是在我的路由表中返回一個表示第一個路由的URL,並且在結尾處有'page'參數,而不是表示當前上下文的url。
此外,路由看起來像將這個'/ Paging/ViewByCategory?name = Shoes & page = 1'更改爲'/ Categories/Shoes/Page/1'?