このようなものはどうですか?
public class DependencyViewEngine : RazorViewEngine
{
public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)
{
var result = base.FindPartialView(controllerContext, partialViewName, useCache);
result.ViewEngine = // resolve view engine
return result;
}
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
var result = base.FindView(controllerContext, viewName, masterName, useCache);
result.ViewEngine = // resolve view engine
return result;
}
}
それで
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new DependencyViewEngine());
編集:
コンテナーを使用するために依存関係リゾルバーを実装するのはどうですか?
public class CustomDependencyResolver : IDependencyResolver
{
public CustomDependencyResolver(IContainer container)
{
// ...
}
public object GetService(Type serviceType)
{
// pass resolution off to your container
}
public IEnumerable<object> GetServices(Type serviceType)
{
// pass resolution off to your container
}
}
それで
protected void Application_Start()
{
ViewEngines.Engines.Clear();
var resolver = new CustomDependencyResolver(container);
DependencyResolver.SetResolver(resolver);
}