我正在尝试在单独的程序集中创建一个区域。根据RouteDebugger,我的路线看起来是正确的,但是我得到了“路径{0}的控制器未找到或未实施IController”错误。MVC3未在外部程序集中调用控制器
我确认控制器是在我的容器中注册的,但在我指定的不同命名空间下。
路由登记:
routes.MapRoute(
"EventCalendar",
"EventCalendar/{action}/{id}",
new { controller = "EventCalendar", action = "Index", id = UrlParameter.Optional },
new[] { "MyAssembly.MyName.Controllers", " MyAssembly.MyName" }
);
控制器:
namespace MyAssembly.MyName.Controllers
{
public class EventCalendarController : Controller
{
public PartialViewResult Index()
{
return new PartialViewResult
{
ViewName = "~/Views/EventCalendar/Index.cshtml",
ViewData = new ViewDataDictionary<object>(this.ViewData.Model)
};
}
}
}
我指定控制器的两个命名空间和在路径母体命名空间。我看过的例子并不清楚哪一个是必需的。 OrchardCMS使用父命名空间。 我注册路线是否正确?
只要控制器在我的容器中,并且名称空间匹配,它应该解析并调用正确?主组件中的控制器正常工作。
是引用的单独程序集吗? – AdamV 2012-04-16 19:23:56
它没有被引用。我使用StructureMap来扫描IController的实例。 – rboarman 2012-04-16 22:05:50