Мне нужен маршрут с двумя необязательными аргументами; Я думал, что будет работать следующее:
routes.MapRoute(
"ProductForm",
"products/{action}/{vendor_id}_{category_id}",
new { controller = "Products", action = "Index", vendor_id = "", category_id = "" },
new { action = @"Create|Edit" }
);
Но это работает только тогда, когда указаны оба значения vendor_id
и category_id
; используя RouteDebug
я вижу, что /products/create/_3
не запускает мой маршрут, поэтому я добавил два других маршрута:
routes.MapRoute(
"ProductForm1",
"{controller}/{action}/_{category_id}",
new { controller = "Home", action = "Index", category_id = "" },
new { controller = "Products", action = @"Create|Edit" }
);
routes.MapRoute(
"ProductForm2",
"{controller}/{action}/{vendor_id}_",
new { controller = "Home", action = "Index", vendor_id = "" },
new { controller = "Products", action = @"Create|Edit" }
);
Итак, вопросы:
Является ли использование трех маршрутов единственным способом создания маршрута с необязательными аргументами?
Эти URL в порядке или нет, то есть, вы бы предложили лучший способ сделать это?