【问题标题】:How to change an ASP.net MVC URL如何更改 ASP.net MVC URL
【发布时间】:2009-07-22 00:19:46
【问题描述】:

有没有一种简单的方法来生成一个新的 Route-URL 而无需这些麻烦。

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

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

我试图避免使用 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
  • 这部分内容通常来自应用程序设置,我已将它们替换为要完整的数字。

【问题讨论】:

    标签: asp.net-mvc pagination asp.net-mvc-routing


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多