RenderAction не находит метод действия в текущем контроллере в текущей области - PullRequest
6 голосов
/ 15 марта 2010

Я создаю проект ASP.NET MVC 2 (RTM), в котором используются области. Действие Index в контроллере Home одной области должно использовать RenderAction для генерации подраздела страницы. Вызываемое действие также определено в том же контроллере Home. Таким образом, вызов должен быть просто:

<% Html.RenderAction("List") %>

Однако я получаю исключение:

Метод открытого действия «Список» не найден в контроллере «RareBridge.Web.Areas.Events.Controllers.HomeController».

Обратите внимание, что я не в области "События"! Я в совершенно другой области. Если я удаляю домашний контроллер «События», то исключение все равно происходит, но имя другого контроллера (все еще не тот, который я хочу, чтобы он вызывал).

Я также пытался предоставить имя контроллера и область для метода RenderAction, но происходит то же исключение. Что здесь происходит?

Кстати: я использую Autofac в качестве контейнера IoC

Ответы [ 2 ]

15 голосов
/ 20 июля 2010

Вероятно, вызываемое вами действие имеет атрибут фильтра (т.е. AcceptVerbs), который не соответствует текущему запросу. Удалите фильтры из действия «Список» и повторите попытку.

4 голосов
/ 12 апреля 2010

Используйте перегрузку рендеринга, которая принимает routeValues ​​в качестве параметра, и используйте свойство area для перенаправления в определенную область:

f.i.

<% Html.RenderAction("Edit", module.Value, new { area = "Modules", id = module.Key }); %>
...