MVC 3 - ActionLink - PullRequest
       6

MVC 3 - ActionLink

3 голосов
/ 14 ноября 2011

Я использую метод RegisterRoutes в глобальном файле, чтобы направить URL пользователя к фактическому URL.

routes.MapRoute("Blog", 
                "blog/dp/{id}", 
                 new { controller ="Blog", action = "Details" });

Как вы уже догадались, Блог - это контроллер, а Подробности - это его действие.

Таким образом, проблема в том, что следующий код не генерирует URL моего желания, который содержит dp слово в URL. Кстати, я не хочу менять имя действия.

@Html.ActionLink( "headline", "Details", "Blog", new { id="1200" }, null )

Заранее спасибо;)

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Вы можете использовать RouteLink вместо ActionLink.В RouteLink вы можете явно передать свое имя маршрута:

@Html.RouteLink("headline", "Blog", new { controller = "Blog", action = "Details" })

Подробнее о методе RouteLink можно узнать в MSDN .Изменение порядка маршрутов может помочь, но это довольно хрупкий механизм.

1 голос
/ 14 ноября 2011

ActionLink может использовать маршрут, отличный от того, который вы указали в вопросе.У вас есть какие-либо маршруты, объявленные до этого?

Маршруты совпадают в том порядке, в котором вы их указали.Так, например, если перед этим маршрутом было объявлено что-то вроде:

routes.MapRoute("Blog", 
                "blog/dp",       // {id} is not provided in this one
                 new { controller ="Blog", action = "Details" });

:

routes.MapRoute("Blog", 
                "blog/dp/{id}", 
                 new { controller ="Blog", action = "Details" });

Сначала будет найден первый маршрут, и вы увидите / blog / dp /? id = 1200 вместо /blog/dp/1200.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...