2011-01-10 81 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()%>并在此范围内传递路由参数时接收页面参数。