【发布时间】:2018-07-28 21:45:29
【问题描述】:
我的项目中有一个自定义控制器,因为我使用 Structure Map 作为 IOC 容器。当我添加 Datatables.mvc(jquery 网格库)并从区域调用视图时,自定义控制器在运行时不起作用并给我一个错误。当我从引用中删除 Datatables.mvc 时,项目编译成功并呈现视图表单控制器。
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
setDbInitializer();
//Set current Controller factory as StructureMapControllerFactory
ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());
Microsoft.AspNet.SignalR.GlobalHost.DependencyResolver = SmObjectFactory.Container.GetInstance<Microsoft.AspNet.SignalR.IDependencyResolver>();
}
private static void setDbInitializer()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<OnlineAcademyDbContext, Configuration>());
SmObjectFactory.Container.GetInstance<IUnitOfWork>().ForceDatabaseInitialize();
}
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, $"Resource not found : {requestContext.HttpContext.Request.Path}");
}
return SmObjectFactory.Container.GetInstance(controllerType) as Controller;
}
}
protected void Application_EndRequest(object sender, EventArgs e)
{
HttpContextLifecycle.DisposeAndClearAll();
}
}
当我从区域调用视图并且 Datatable.mvc 已添加到引用时,这是错误:
System.Web.HttpException:找不到资源:区域的 url... 控制器类型为空
谢谢大家。
【问题讨论】:
标签: c# jquery asp.net asp.net-mvc controller