2009-07-21 98 views
1

是否有一種簡單的方法來生成一個新的Route-URL,但沒有這個faff。如何更改ASP.net MVC URL

我目前正在處理的幾條線路相同的觀點,所有這些都與 /{}頁面編號結束

所有我想要做的就是刪除一切回到過去反斜線和更換號碼。

我試圖避免使用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 
  • 各個位的方法通常IM來自我已經更換了他們的數字是完整的應用程序的設置。

回答

3

路由工作有兩種方式 - 它會接收請求url並匹配正確的資源,或者您可以根據您的參數要求路由生成一個URL。

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

這會根據您的參數值爲您生成一個您想要的資源的URL。
如果你傳遞「controller」=「whatever」,「action」=「whatever」和「pagenumber」= currentpg,你應該得到你想要的URL,而不必手動解析URL。如果您的路線在未來發生變化,這也更具可擴展性。

您傳遞給GetVirtualPath的任何額外參數都不會被路由匹配使用,它們將作爲查詢字符串參數追加。