2011-01-12 4 views
0

Gibt es eine Möglichkeit, Abhängigkeiten zu einer _ViewStart-Klasse zu injizieren/aufbauen, ohne meinen Service Locator direkt aufzurufen?asp.net mvc _ViewStart DI Hooks

Dank Ben

+0

Was genau versuchen Sie zu tun? – marcind

+0

Ruft eine Instanz eines Einstellungsobjekts in _viewstart auf, um die Layoutseite festzulegen. –

+1

Wenn Sie nur die Layoutseite festlegen müssen, können Sie dies in Ihrem Controller mit einer der View() - Überladungen tun: 'ViewResult View (string viewName, string masterName) 'und' ViewResult View (string viewName, string masterName, Objektmodell) '. –

Antwort

1

Ich verstehe nicht, wie Sie Ihre Einstellungen injizieren kann, wenn die _ViewStart Klasse (System.Web.Mvc.ViewStartPage) sie keine Eigenschaft haben zu halten.

Sie versuchen Angenommen, Ihre Einstellungen in _ViewStart zu vermeiden holen, ist eine mögliche Lösung wäre, eine benutzerdefinierte ViewStartPage Klasse zu erstellen, die eine Eigenschaft für Ihre Einstellungen hat, und rufen Sie die Service-Locator von innen dort:

/* CustomViewStart.cs */ 
public class CustomViewStart : System.Web.Mvc.ViewStartPage 
{ 
    public ISettings Settings { get; set; } 

    public CustomViewStart() 
    { 
     // Call service locator here 
     this.Settings = blah 
    } 
} 

um dies zu nutzen, müssen Sie die Basisklasse in Ihrem _ViewStart setzen:

@* _ViewStart.cshtml *@ 
@inherits MyTestApp.CustomViewStart 

Es scheint nicht zu sein (oder auf jeden Fall kann ich nicht finden) eine Möglichkeit, die Basisklasse für diese Einstellung vornehmen, in Web.config wie du kannst mit basePageType :(

+1

Versuchte das und bekam einen seltsamen Fehler, den es von WebViewPage oder von ViewStartPage ableiten muss, was es tut. –

Verwandte Themen