我正在尝试在单独的程序集中创建一个区域。根据 RouteDebugger,我的路由看起来是正确的,但我收到“路径 {0} 的控制器未找到或未实现 IController”。错误。
我验证了控制器已在我的容器中注册,但在我在路由中指定的不同命名空间下。
路线登记:
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 使用父命名空间。我是否正确注册了路线?
只要控制器在我的容器中,并且命名空间匹配,它就应该解析并被调用,对吗?主组件中的控制器工作正常。