0

私はすでにASP.Net MVC でページングとルーティングを見てきましたが、それをうまく機能させることができません。

私のホームページでは、ページング用に次のきれいな URL を生成したいと考えています。

http://mysite
http://mysite/2
http://mysite/3 

ルーティングしないと、ページャーによって生成されるデフォルトの URL は次のようになります。

http://mysite/?page=1
http://mysite/?page=2
http://mysite/?page=3 

これまでの私の RouteCollection は次のとおりです。

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
    "HomePaging",
    "{page}",
    new { controller = "Home", action = "Index" },
    new { page = @"\d+" },
    new[] { "MySite.Controllers" });

routes.MapRoute(
    "HomePagingFirst",
    "{controller}",
    new { controller = "Home", action = "Index", page = 1 },
    new[] { "MySite.Controllers" });

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { "MySite.Controllers" });

}

これにより、次のルートが生成されます。

http://mysite/1
http://mysite/2
http://mysite/3 

これにより、最初のページの非正規ルートが生成されるだけでなく、次のように生成されるすべてのリンク@Html.ActionLink("my site", "Index", "Home")に現在のページのページ番号が追加されます。

これを行う方法はありますか?できれば、簡単な説明と回答をいただければ幸いです。

4

1 に答える 1

0

私は最終的にこのように動作するようになりました。しかし、正直なところ、それは試行錯誤の結果でした。誰かがそれが機能する理由を説明できれば、訪問者にとって非常に役立つと確信しています.

routes.MapRouteLowercase(
    "HomePaging",
    "{controller}",
    new { controller = "Home", action = "Index", page = UrlParameter.Optional },
    new { page = @"\d+" },
    new[] { "MySite.Controllers" });

routes.MapRouteLowercase(
    "HomeFirstPage", // Route name
    "{page}", // URL with parameters
    new { controller = "Home", action = "Index", page = 1 },
    new { page = @"\d+" },
    new[] { "MySite.Controllers" }); 
于 2013-01-21T23:26:02.020 に答える