2010-01-24 50 views
6

Ich folge Chris Pietschmann's solution for theming in ASP.NET MVC.ASP.NET MVC ViewEngine ViewLocationCache.GetViewLocation gibt Null zurück

Eine Sache, die ich festgestellt habe, ist, dass der Ansichtsname nicht aus dem ViewLocationCache bei nachfolgenden Anforderungen abgerufen wird. Ich bin mit ASP.NET MVC 2.0 RC

Wenn der folgende Code ausgeführt wird:

this.ViewLocationCache.InsertViewLocation(controllerContext.HttpContext, cacheKey, virtualPath); 

und ich schweben über this.ViewLocationCache es gibt nur {System.Web.Mvc.NullViewLocationCache} - was darauf hindeutet, nichts wurde hinzugefügt?

Antwort

10

ViewLocationCache funktioniert standardmäßig nur im Freigabemodus (Einstellung <compilation debug="false"> in web.config).

Um ViewLocationCache im Debug-Modus zu aktivieren:

public MyCustomViewEngine() 
{ 
    ViewLocationCache = new DefaultViewLocationCache(); 
} 

Sie können auch die Standard-Cache-Zeitspanne Werte außer Kraft setzen, wenn:
In einem benutzerdefinierten Ansicht Motor, der wie so von WebFormViewEngine, stellen Sie die ViewLocationCache in Ihrem Viewengine Konstruktor erbt du wünschst.