Справка по ASP.NET MVC ActionLink - PullRequest
1 голос
/ 29 марта 2011

У меня есть следующая ссылка действия в представлении для шоу, например, /Shows/Details/1

<%= Html.ActionLink(item.venue, "Details", "Venues", new { name = item.venue }) %>

Это отображает название места проведения шоу, ноМне нужно, чтобы он связывался с Venue, а не с контроллером Shows, так как в данный момент URL, который он создает, /Shows/Details?Length=6, когда ему нужно перейти к /Venues/Details?Name=VenueName

Имя контроллера для Venues - VenuesController.

Спасибо

Ответы [ 3 ]

6 голосов
/ 29 марта 2011

Вы используете неправильную перегрузку для .ActionLink. Попробуйте вместо этого ...

<%= Html.ActionLink(item.venue, "Details", "Venues", new { name = item.venue }, new {}) %>

В настоящее время выбирается string, string, object, object перегрузка. Ваша строка "Venues" используется для маршрутизации данных.

2 голосов
/ 29 марта 2011

Добавьте этот маршрут в ваш global.asax:

routes.MapRoute(
    "Venue",
    "Venues/{name}",
    new { controller = "Venues", action = "Details", name = UrlParameter.Optional }
);

Тогда назовите это так:

<%= Html.ActionLink(item.venue, "Details", "Venues", new { name = item.venue }, new{}) %>

будет отображаться:

/ Место / NameOfTheVenue

0 голосов
/ 29 марта 2011

Я знаю, что это не ответ на ваш вопрос, но он поможет вам создать лучшее приложение. Я предлагаю вам взглянуть на T4MVC: http://mvccontrib.codeplex.com/wikipage?title=T4MVC, это очень поможет вам построить свою ссылку и оторвать волшебную строку. Я использую это больше года и никогда не вернусь. На 9 канале также есть хорошее видео: http://channel9.msdn.com/blogs/jongalloway/jon-takes-five-with-david-ebbo-on-t4mvc

Надеюсь, это поможет!

...