1

有没有一种简单的方法来生成一个新的 Route-URL 而没有这些问题。

我目前正在处理通往同一视图的多条路线,所有路线都以 /{pagenumber} 结尾

我要做的就是将所有内容删除回最后一个反斜杠并替换数字。

我试图避免使用 URL Maker,因为分页似乎有点矫枉过正,但欢迎所有建议......

这是我用于分页的方法

#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
  • 这其中的各个部分通常来自应用程序设置,我已将它们替换为要完整的数字。
4

1 回答 1

3

路由有两种工作方式——它会接收请求 url 并匹配正确的资源,或者您可以要求路由根据您拥有的参数生成一个 URL。

RouteCollection.GetVirtualPath(
                                context, 
                                new RouteValueDictionary(
                                       {param1name, param1value},
                                       {param2name, param2value}...
                                 )
                               );

这将根据您的参数值为您生成所需资源的 URL。
如果你传入“controller”=“whatever”、“action”=“whatever”和“pagenumber”=currentpg,你应该得到你想要的URL,而不必手动解析URL。如果您的路线将来发生变化,这也更具可扩展性。

您传递给 GetVirtualPath 的任何额外参数,路由匹配未使用的任何额外参数都将作为查询字符串参数附加。

于 2009-07-21T16:13:41.083 回答