2012-12-05 5 views
5

Ich habe eine gemeinsam genutzte _Layout.cshtml-Seite, auf die ich Zugriff auf den Dienst habe, der diese Seite aufruft, oder auf die Anfrage dto oder Model zugreift Ich kann verschiedene Optionen abhängig vom Typ des aufrufenden Dienstes, des Modelltyps oder des Anforderungstyps rendern. Ich kann anscheinend keinen der oben genannten Zugriffe auf der _Layout-Seite erhalten. Ich bin ziemlich neu bei SS-Razor und sehe wahrscheinlich nicht das größere Bild, aber hier ist, was ich bisher getan habe, um zu versuchen, auf das Modell zuzugreifen.Zugriff auf Modell-/Anfragedaten mit Servicestack-Rasierer von einer _Layout-Seite aus möglich

In der _Layout.cshtml habe ich Folgendes definiert, damit ich Zugriff auf die ViewBag und auch die Sitzungsinformationen erhalten kann.

@using ServiceStack.Razor 
@inherits ViewPage<ResponseBase> 

Ich habe auch auf die Seite Basisinfrastruktur im _Layout Dieses gib mir

@inherits ViewPage 

Zugang nur eine einfache Ansicht Seite versucht. Aber das Modell im Layout ist IMMER Null, obwohl ich vorübergehend alle Antworten geändert habe, um von einer ResponseBase-Klasse zu erben, und wie im obigen Code zu sehen, erben ich die Seite, wo alle Modelle mindestens eine ResponseBase hätten.

Dann habe ich einen globalen Filter eingerichtet, wo ich die Anfrage DTO in die Anfrage Elemente injizieren, als wäre das ein Start und würde beweisen, dass ich auf einige Informationen im Layout zugreifen konnte. Also habe ich folgendes an die App-Host,

this.RequestFilters.Add((httpReq, httpResp, requestDto) => 
{ 
    if(httpReq != null && httpReq.Items != null) 
        httpReq.Items["RequestDto"] = requestDto; 
}); 

ich einen Haltepunkt auf dem Filter betroffen sehen und die reqestDto der Sammlung addedd worden sehen kann, so weiß ich dieses Stück zumindest funktioniert. Als ich versucht habe, auf den requestDto im _Layout zuzugreifen, benutze den Code unter dem Request.Items enthält nie den RequestDto.

@{ 
    RequestBase myRequest = null; 
    if(base.Request != null) 
     if(base.Request.Items.ContainsKey("RequestDto")) 
      myRequest = (RequestBase)base.Request.Items["RequestDto"]; 
} 

All dies ist etwas Versuch und Irrtum, weil für das Leben von mir, dass ich nicht einen Haltepunkt bekommen kann zu setzen, während in einer Razor Ansicht Seite, so kann ich sehen, was actially dort los ist. Ich habe das RazorRockStars-Sample in dieser Phase schon millionenfach durchgespielt und kann kein Beispiel dafür sehen, was ich dort versuche.

Also hat jeder irgendwelche Hinweise, Beispiele oder Ratschläge, wie man dieses Problem angeht. Fühlen Sie sich frei, einen völlig anderen Ansatz für das Rendern verschiedener Optionen im _Layout aufzuzeigen, da ich zu diesem Zeitpunkt nicht mehr viel Haar übrig habe und bereit bin, fast alles auszuprobieren.

+0

Sind Sie selbst hosting, Hosting in IIS oder verwenden Sie ServiceStack in einem klassischen ASP MVC-Projekt (Mischen von beiden). –

+0

Nein, ich bin kein Self-Hosting, ich bin in einem Webhost. – Bigtoe

+0

Das gleiche Problem hier. Ich bekomme die 'ServiceStack.Razor.Compilation.RazorDynamicObject 'implizit zu' XYZ.IMyModel'- Ausnahmen konvertieren. –

Antwort

1

Testen Sie v3.9.33 von ServiceStack. myth behoben einige Dinge in der Rasierklinge Unterstützung, die mit diesem Problem verbunden sein könnte.

+0

Ich habe ähnliche Probleme mit den neuesten NuGet. Irgendwelche anderen Ideen? – JesseP

Verwandte Themen