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

ルーティングは 2 つの方法で機能します。リクエスト 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 に答える