Как указать контроллер в ActionLink HTML помощник в C # - PullRequest
2 голосов
/ 27 июля 2011

У меня есть веб-приложение, разработанное в ASP.NET MVC3 с C # и Razor .

Я хотел бы назвать конкретный Метод действия определенного Контроллера с помощью ActionLink HTML-помощника.Я знаю, что второй параметр ActionLink указывает метод действия, который вызывается из маршрута по умолчанию , который является единственным в моем файле Global.asax :

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Index", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

Я бы хотел вызвать Download Метод действия с контроллера Home вместо Index .Это не работает:

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId } )

Требуется в качестве третьего параметра тип Object, но я не могу найти в Интернете ни одного примера.

Какие шаги необходимы для вызова конкретного контроллера/ ActionMethod?Должен ли я создать другой маршрут в моем файле Global.asas?

Спасибо

Ответы [ 2 ]

22 голосов
/ 27 июля 2011

Попробуйте это:

@Html.ActionLink("Download", "Download", new { controller = "Home",  Id = topic.TopicId });

Третий параметр, object: routeValues, используется в качестве словаря в Asp.net MVC.Фил Хаакед написал в блоге о решении использовать объект в качестве значений маршрута.

update :
Ваша функция перегрузки не работает, потому что вы вызываете thisметод . Строка также является объектом .Итак, вы передаете "Home" как routeValues ​​и new { topicId = topic.Id} как htmlAttributes.:)

0 голосов
/ 27 июля 2011

Является ли это необходимой вам перегрузкой? Вам понадобится 5-й параметр для атрибутов html.

@Html.ActionLink("Presentation", "Download", "Home", new { topicId = topic.TopicId }, new { name="Download" )
...