2009-07-21 55 views
1

このRoute-URLをすべて削除せずに新しいRoute-URLを生成する簡単な方法はありますか?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 
  • を用いる方法イム。

答えて

3

ルーティングは2つの方法で動作します。リクエストURLを受け取り、正しいリソースに一致させるか、ルーティングパラメータに基づいてURLを生成するようにルーティングするかを尋ねることができます。

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

これにより、パラメータ値に基づいて、希望するリソースへのURLが生成されます。
"controller" = "whatever"、 "action" = "whatever"、 "pagenumber" = currentpgを渡すと、手動でURLを解析することなく、必要なURLを取得する必要があります。将来的にルートが変更される場合、これはさらに拡張性があります。

ルート照合で消費されないGetVirtualPathに渡される余分なパラメータは、クエリ文字列のパラメータとして追加されます。

関連する問題