我有一個名爲Diary
的控制器,其操作名爲View
。asp.net mvc - 如何在路由中配置默認參數
如果我接收的URL的形式「日記/ 2012/6」我希望它調用View
行動year
= 2012和month
= 6
如果我的形式接收的URL「日記「我希望它通過year
= [當前年份]和month
= [當前月份號碼]調用View
行動。
我該如何配置路由?
我有一個名爲Diary
的控制器,其操作名爲View
。asp.net mvc - 如何在路由中配置默認參數
如果我接收的URL的形式「日記/ 2012/6」我希望它調用View
行動year
= 2012和month
= 6
如果我的形式接收的URL「日記「我希望它通過year
= [當前年份]和month
= [當前月份號碼]調用View
行動。
我該如何配置路由?
在你的路線,你可以使用以下命令:
routes.MapRoute(
"Dairy", // Route name
"Dairy/{year}/{month}", // URL with parameters
new { controller = "Dairy", action = "Index", year = DateTime.Now.Year, month = DateTime.Now.Month });
如果不能提供一年/月,當前值將被髮送。如果提供它們,那麼這些值將被該路線使用。
EDIT
除下面的評論外,這是用於使用上述標準創建新項目的代碼。
的Global.asax
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
);
}
DairyController
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
結果:
routes.MapRoute(
"DiaryRoute",
"Diary/{year}/{month}",
new { controller = "Diary", action = "View", year = UrlParameter.Optional, month = UrlParameter.Optional }
);
和控制器動作:
public ActionResult View(int? year, int? month)
{
...
}
如果我不提供URL中的參數,我會得到舊的'參數字典包含空條目'schtick。 – David
@大衛 - 你有其他路線可能會與這一個?我剛剛使用上述方法創建了一個新項目,並且與參數字典沒有任何問題。 – Tommy
哦,有趣。我會刪除我的其他路線並檢查。 – David