我正在创建一个使用区域的ASP.NET MVC 2(RTM)项目。一个区域的Home控制器的Index操作需要使用RenderAction来生成页面的子部分。调用的操作也在同一个Home控制器中定义。所以电话应该只是:
<% Html.RenderAction("List") %>
然而,我得到一个例外:
在控制器'RareBridge.Web.Areas.Events.Controllers.HomeController'上找不到公共操作方法'List'。
请注意,我在“事件”区域中不!我在一个完全不同的领域。如果我删除“事件”家庭控制器,那么异常仍然会发生,但命名一个不同的控制器(仍然不是我想要它调用的控制器)。
我也尝试过为RenderAction方法提供控制器名称和区域,但是会发生同样的异常。这是怎么回事?
BTW:我使用Autofac作为我的IoC容器
答案 0 :(得分:15)
您调用的操作可能包含与当前请求不匹配的过滤器属性(即AcceptVerbs)。从“列表”操作中删除过滤器,然后重试。
答案 1 :(得分:4)
使用renderaction重载,它将routeValues作为参数,并使用area属性重定向到特定区域:
f.i。
<% Html.RenderAction("Edit", module.Value, new { area = "Modules", id = module.Key }); %>