3

我有一个控制器调用Diary一个名为View.

如果我收到格式为“Diary/2012/6”的 URL,我希望它使用= 2012 和= 6调用View操作。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 });

如果未提供年/月,则将发送当前值。如果提供了它们,那么路由将使用这些值。

  • /乳制品/ -> 年 = 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 回答