【发布时间】:2011-07-06 13:29:55
【问题描述】:
我正在尝试使用 MVC Futures 库中强类型的 Html.RenderAction
我的主 HomeController (area = "") 上有一个 Navigation 操作,我正试图从我的 Site.Master 调用它
<% Html.RenderAction<HomeController>(x=>x.Navigation()); %>
在我将另一个 HomeController 添加到我的 Admin 便携式区域之前,这非常有效。然后我开始出现以下错误:
找到多个匹配的类型 名为“Home”的控制器。这个可以 如果服务于此的路线发生 请求没有指定命名空间 搜索匹配的控制器 请求。如果是这种情况, 通过调用 'MapRoute' 方法的重载 接受一个“命名空间”参数。
“主页”请求已找到 以下匹配的控制器: Areas.Admin.Controllers.HomeController Web.Controllers.HomeController
我能够通过使用以下非 mvccontrib 强类型 RenderAction 方法解决该问题。我宁愿在页面上没有这个非强类型方法,有没有办法让 mvccontrib 方法接受一个区域,或者让他们知道根据路由或指定的控制器的命名空间生成区域。
<% Html.RenderAction("Navigation", "Home", new { area = "" }); %>
我已经添加到我的 global.asax.cs 文件中,以支持具有如下所示默认区域的多个控制器,并且我还验证了这是我的控制器的正确命名空间。
_routeCollection.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "Web.Controllers" });
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-areas asp.net-mvc-futures