这样的事情怎么样?
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);
}