В маршрутах, вы можете использовать следующее:
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
- /Молочные продукты/1976/04 -> год = 1976, месяц = 4
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
Результаты:
- /Молочные продукты/1976/05 -> Выходы 1976 за год и 5 за месяц
- /-> Выходы 2012 за год и 6 за месяц
Если я не задаю параметры в URL-адресе, я получаю старый словарь параметров, содержащий null-запись 'schtick. – David
@David - У вас есть другие маршруты, которые могут быть с этим? Я только что создал новый проект с использованием вышеизложенного и не имел проблем с параметрическим словарем. – Tommy
О, интересно. Я удалю другие маршруты и проверю. – David