MVC3 Actionlink перенаправляет на неправильный контроллер - PullRequest
3 голосов
/ 09 ноября 2011

У меня есть контроллер ProgramSummary, который я хочу перенаправить на второй контроллер TRPResource. В первом контроллере для подробного просмотра у меня есть actionLink:

@Html.ActionLink("Resource(s)", "TRPDetails", "TRPResource", new { ttl = ViewBag.shrt_titles })

Он перенаправляет на запрашиваемый URL: /ProgramSummary/TRPDetails, который является правильным представлением, но неправильным контроллером. Если я изменю actionLink на чтение (следующим образом)

@Html.ActionLink("Resource(s)", "TRPDetails", "TRPResource")

Actionlink работает так, как я намереваюсь, и переходит к правильному контроллеру и представлению, но проблема в том, что значение не поддерживается в ViewBag и не передается. Какую концепцию я здесь упускаю и / или можно ли обойти или предложить другой подход?

Ответы [ 2 ]

12 голосов
/ 09 ноября 2011

Вы используете неправильную перегрузку помощника ActionLink. Вы должны использовать правильную перегрузку (обратите внимание на null в конце):

@Html.ActionLink(
    "Resource(s)",                        // linkText
    "TRPDetails",                         // actionName
    "TRPResource",                        // controllerName
    new { ttl = ViewBag.shrt_titles },    // routeValues
    null                                  // htmlAttributes
)

, тогда как ваш код использует после перегрузки :

@Html.ActionLink(
    "Resource(s)",                     // linkText
    "TRPDetails",                      // actionName
    "TRPResource",                     // routeValues
    new { ttl = ViewBag.shrt_titles }  // htmlAttributes
)

Заметили проблему?

0 голосов
/ 09 ноября 2011

Помощник ActionLink использует вашу конфигурацию маршрутизации для создания URL-адресов из предоставленных значений маршрута.Вероятно, у вас есть какой-то маршрут, по которому он проходит, прежде чем тот, который вы хотите пройти.Ваш маршрут кажется довольно простым, поэтому вы просто внимательно смотрите на маршруты.В более сложных сценариях вы можете использовать отладчик маршрутизации

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

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