2013-05-30 2 views
3

Я зарегистрировал маршрут:отсутствующий параметр маршрутизации

routes.MapRoute(
    "Journals", 
    "Journals/{year}/{month}/{id}", 
    new { 
     controller = "Journals", 
     action = "Get", 
     year = UrlParameter.Optional, 
     month = UrlParameter.Optional, 
     id = UrlParameter.Optional 
    } 
); 

Действие:

public ActionResult Get(int? year, int? month, int? id) 

Позже в виду (только для проверки):

@Url.Action("Get", "Journals") 
@Url.Action("Get", "Journals", new { year = 2013 }) 
@Url.Action("Get", "Journals", new { year = 2013, month = 4 }) 
@Url.Action("Get", "Journals", new { year = 2013, month = 4, id = 1 }) 

И результат есть:

/Journals 
/Journals 
/Journals/2013/4 
/Journals/2013/4/1 

Таким образом, второй URL-адрес пропустил параметр. Что не так?

+1

Полезный инструмент для этих ситуаций - отладчик маршрута Фила Хаака: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx – neontapir

ответ

1

Вы не можете иметь более 1 непрерывные дополнительные параметры маршрута .. как он не может понять, какой из них не хватает ..

2013 в /Журналы/2013 можно интерпретировать либо как year или его month или id

См. Infinite URL Parameters for ASP.NET MVC Route для обходного пути с использованием параметра всего маршрута.

Смежные вопросы