是否有一种简单的方法可以生成一个新的Route-URL而不需要这么做。
我目前正在处理到同一视图的多条路线,所有路线都以此结尾 / {页面编号}
我要做的就是将所有内容删除回上一个反斜杠并替换该号码。
我试图避免使用网址制作工具,因为它似乎有点过分的分页但所有建议都欢迎...
继承人使用分页方法
#region Create View Pagination
/// <summary>
/// Create Pagination For Display
/// </summary>
/// <param name="TotalPgs"></param>
/// <param name="currentPg"></param>
/// <returns></returns>
private string pagnationStr(int TotalPgs, int currentPg)
{
string tmp = "";
string URLX = "";
URLX = string.Format("{0}", base.Request.Url);
int pageSet = 10;
//Previous Link
if (currentPg > 1) tmp += "<li><a href='" + URLX + (currentPg - 1) + "'>Previous</a></li>";
//Standard Pagination
tmp += "<ul class=\"pagination\">";
for (int i = currentPg; i < TotalPgs; i++)
{
tmp += "<li><a href='" + URLX + i + "'>" + i.ToString() + "</a></li>";
if (pageSet < 1) break;
pageSet--;
}
tmp += "</ul>";
return tmp;
}
#endregion
答案 0 :(得分:3)
路由有两种工作方式 - 它会接收请求网址并匹配正确的资源,或者您可以要求路由根据您拥有的参数生成URL。
RouteCollection.GetVirtualPath(
context,
new RouteValueDictionary(
{param1name, param1value},
{param2name, param2value}...
)
);
这将根据您的参数值为您生成您想要的资源的URL 如果你传入“controller”=“whatever”,“action”=“whatever”和“pagenumber”= currentpg,你应该得到你想要的URL,而不必手动解析URL。如果您的路线将来发生变化,这也会更具可扩展性。
传递给GetVirtualPath的任何未被路由匹配使用的额外参数都将作为查询字符串参数附加。