ASP.NET MVC 3 Разрывы маршрутов Функциональность ActionLink - PullRequest
3 голосов
/ 16 февраля 2011

У меня есть MVC 2, который я перенес в MVC 3. После миграции ни одна из моих ссылок ActionLink больше не работала.Я обнаружил, что это из-за моего маршрута по умолчанию.

routes.MapRoute( "Default", "{controller}/{action}/{id}/{title}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, title = UrlParameter.Optional } );

Если я изменю маршрут по умолчанию на маршрут по умолчанию MVC, он снова будет работать нормально.

routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

Почему заголовок является необязательнымпараметр разбить мои ActionLinks?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011
2 голосов
/ 16 февраля 2011

Это не обязательный параметр title, который проблематичен. В вашем случае это параметр id, который является необязательным. Только последний параметр определения маршрута может быть необязательным, и это правило было применено в ASP.NET MVC 3. Вот аналогичный вопрос по этой теме.

Поэтому, если вы хотите иметь такой маршрут, убедитесь, что вы всегда указываете значение параметра id при создании этих ссылок:

@Html.ActionLink("text", "Index", new { id = "123" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...