我正在嘗試在單獨的程序集中創建一個區域。根據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