【发布时间】:2009-10-17 18:01:02
【问题描述】:
我关注Martijn Boland's 'Paging with ASP.NET MVC'。虽然很有帮助,但它提出了一些我不明白的问题。
Martijn 说:
在内部,寻呼机使用 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,最后是一个“页面”参数,而不是一个代表当前上下文的 url。
此外,将“/Paging/ViewByCategory?name=Shoes&page=1”更改为“/Categories/Shoes/Page/1”的路由会是什么样子?
【问题讨论】:
标签: asp.net-mvc routing