6

我正在创建一个使用区域的 ASP.NET MVC 2 (RTM) 项目。一个区域的 Home 控制器的 Index 动作需要使用 RenderAction 来生成页面的子部分。调用的动作也在同一个 Home 控制器中定义。所以调用应该是:

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

但是,我得到一个例外:

在控制器“RareBridge.Web.Areas.Events.Controllers.HomeController”上找不到公共操作方法“List”。

请注意,我不在“活动”区域!我在一个完全不同的领域。如果我删除“事件”主控制器,那么异常仍然会发生,但会命名一个不同的控制器(仍然不是我希望它调用的那个)。

我也尝试将控制器名称和区域提供给 RenderAction 方法,但发生了同样的异常。这里发生了什么?

顺便说一句:我使用 Autofac 作为我的 IoC 容器

4

2 回答 2

15

您调用的操作可能具有与当前请求不匹配的过滤器属性(即 AcceptVerbs)。从“列表”操作中删除过滤器,然后重试。

于 2010-07-20T16:18:58.007 回答
4

使用以 routeValues 作为参数的 renderaction 重载,并使用 area 属性重定向到特定区域:

<% Html.RenderAction("Edit", module.Value, new { area = "Modules", id = module.Key }); %>
于 2010-04-12T06:29:18.820 回答