別のアセンブリに領域を作成しようとしています。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 は、親の名前空間を使用します。ルートは正しく登録されていますか?
コントローラーがコンテナー内にあり、名前空間が一致している限り、コントローラーは解決され、正しく呼び出されるはずです。メイン アセンブリのコントローラは正常に動作します。