2012-12-05 5 views
5

Ho una pagina _Layout.cshtml condivisa in cui è necessario accedere al servizio che sta richiamando quella pagina o accedere al dto o al modello della richiesta in modo che Posso rendere diverse opzioni a seconda del tipo di servizio chiamante, del tipo di modello o del tipo di richiesta. Non riesco ad accedere a nessuno dei precedenti mentre sono nella pagina _Layout. Sono abbastanza nuovo su SS-Razor e probabilmente non vedo l'immagine più grande, ma ecco cosa ho fatto finora per provare ad accedere al modello.Impossibile accedere al modello/richiesta dati con rasoio servicestack da una pagina _Layout

Nel file _Layout.cshtml, ho definito quanto segue, in modo da poter accedere al ViewBag e anche alle informazioni sulla sessione.

@using ServiceStack.Razor 
@inherits ViewPage<ResponseBase> 

Ho provato solo una pagina bella vista anche

@inherits ViewPage 

Questo mi dà l'accesso alle infrastrutture di base della pagina in _Layout. Ma il modello nel layout è SEMPRE nullo, anche se temporalmente ho cambiato tutte le risposte da ereditare da una classe ResponseBase e come si può vedere nel codice sopra eredito quella pagina in cui tutti i modelli avrebbero almeno un ResponseBase.

Ho quindi impostato un filtro globale in cui ho iniettato la richiesta DTO negli elementi della richiesta in quanto sarebbe un inizio e dimostrerebbe che ho potuto accedere ad alcune informazioni mentre nel layout. Così ho aggiunto il seguente all'host app,

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

riesco a vedere un punto di interruzione stato colpito sul filtro e può vedere la reqestDto stato addedd alla raccolta in modo che conosco questo pezzo, almeno funziona. Quando ho provato ad accedere alla richiestaDto nel _Layout usando il codice sotto la Request.Items non contiene mai il RequestDto.

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

tutto questo è un po 'per tentativi ed errori, perché per la vita di me non riesco a trovare un punto di interruzione per impostare, mentre in una visualizzazione Razor pagina in modo da poter vedere che cosa sta succedendo actially in là. Ho attraversato il campione RazorRockStars per un periodo di miliardi di volte in questa fase e non riesco a vedere alcun esempio di ciò che sto cercando di fare lì.

Così chiunque ha suggerimenti, esempi o consigli su come affrontare questo problema. Sentiti libero di indicare un approccio completamente diverso per il rendering di diverse opzioni nel _Layout, poiché in questo momento non mi restano molti capelli e sono disposto a provare qualsiasi cosa.

+0

Sei self-hosting, hosting in IIS o stai utilizzando ServiceStack in un classico progetto ASP MVC (missaggio di entrambi). –

+0

No, non sono Self Hosting, sono in un host web. – Bigtoe

+0

Lo stesso problema qui. Sto ottenendo il 'Impossibile convertire in modo implicito tipo 'ServiceStack.Razor.Compilation.RazorDynamicObject' in 'XYZ.IMyModel'' eccezioni. –

risposta

1

Provate la v3.9.33 di ServiceStack. mythz ha corretto alcune cose nel supporto del rasoio che potrebbe essere correlato a questo problema.

+0

Sto riscontrando problemi simili anche con gli ultimi su NuGet. Altre idee? – JesseP

Problemi correlati