3

Diaryというアクションで呼び出されるコントローラーがありViewます。

「Diary/2012/6」という形式の URL を受け取った場合、 = 2012 と= 6Viewでアクションを呼び出したいと思います。yearmonth

「日記」という形式の URL を受け取った場合、 = [現在の年] と= [現在の月番号]でViewアクションを呼び出したいと考えています。yearmonth

ルーティングをどのように構成しますか?

4

2 に答える 2

2
routes.MapRoute(
    "DiaryRoute",
    "Diary/{year}/{month}",
    new { controller = "Diary", action = "View", year = UrlParameter.Optional, month = UrlParameter.Optional }
);

そしてコントローラのアクション:

public ActionResult View(int? year, int? month)
{
    ...
}
于 2012-06-18T20:00:00.533 に答える
2

ルートでは、以下を使用できます。

routes.MapRoute(
                "Dairy", // Route name
                "Dairy/{year}/{month}", // URL with parameters
                new { controller = "Dairy", action = "Index", year = DateTime.Now.Year, month = DateTime.Now.Month });

年月が指定されていない場合は、現在の値が送信されます。それらが提供されている場合、それらの値はルートによって使用されます。

  • /Dairy/ -> 年 = 2012、月 = 6
  • /Dairy/1976/04 -> 年 = 1976、月 = 4

編集

以下のコメントに加えて、これは上記の基準を使用して新しいプロジェクトを作成するために使用されるコードです。

グローバルアサックス

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "Dairy/{year}/{month}", // URL with parameters
        new { controller = "Dairy", action = "Index", year = DateTime.Now.Year, month = DateTime.Now.Month } // Parameter defaults
    );

}

乳製品コントローラー

public ActionResult Index(int year, int month)
{
    ViewBag.Year = year;
    ViewBag.Month = month;
    return View();
}

景色

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

Month - @ViewBag.Month <br/>
Year - @ViewBag.Year

結果:

  • /Dairy/1976/05 -> 年は 1976、月は 5 を出力します
  • / -> 年は 2012、月は 6 を出力
于 2012-06-18T20:00:03.123 に答える