如何更改ASP.net MVC URL

时间:2009-07-21 15:56:01

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

是否有一种简单的方法可以生成一个新的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
  • 这通常来自应用程序设置我已用数字替换它们以完成。

1 个答案:

答案 0 :(得分:3)

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

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

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

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