我有以下路线:
// 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 / Articles /”视图中添加分页功能。寻呼机使用以下代码获取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 / Articles /”页面运行此代码,GetVirtualPath
总是返回第一条路线“MyHome / Authors /”并完全忽略前缀“MyHome / Articles /”在路线上。
当我使用ActionLink
时,它工作正常,而不是来自GetVirtualPath
。
有什么想法吗?
感谢。
答案 0 :(得分:0)
如果您想将分页应用于MyHome / Articles
您可以提供类似
的硬编码路径yourpath =“MyHome / Articles?page =”+ page_number;
并且每次必须从视图接收页面参数时,该分页助手可用于查看或使用&lt;%= Html.ActionLink()%&gt;并在此范围内传递routes参数。