Domanda

Sono stato lo spostamento di un abbastanza nuovo progetto dal ViewPages a Razor oggi, e tutto sembra andare per il meglio. Tranne che sto cercando di utilizzare Html.Action per rendere un controllo utente e non renderò nulla.

Così ho un file condiviso / _Layout.cshtml cui viene fatto riferimento in Home / Index.cshtml

Index.cshtml ha il seguente:

<article>

@Html.Action("LatestBlogsMainPanelWidget", "Blogs")

...

</article>

Ho messo le trappole nel BlogsController, quindi so che viene richiesto. So anche che un modello viene restituito, che il LatestBlogsMainPanelWidget viene trovato dal motore di visualizzazione, e il codice anche qualche fittizio Razor sintassi viene eseguito: @ { var s = "ciao"; }

, ma il codice HTML pianura in questo file non sta rendendo al browser. Ho provato altre (in precedenza di lavoro) parziali troppo e non apparirà né (visualizza sorgente nella pagina web conferma che non ci sia).

Ho anche provato sostituendo @ {Html.RenderAction (...); } senza successo. HTML entrambi i lati della @ Html.Action sta comparendo, quindi so Index.cshtml viene visualizzata correttamente.

Ancora più strano il file _Layout ha anche i comandi Html.Action e do bene apparire.

Sono davvero non sicuro che altro per verificare, o come per confermare che la pipeline è sempre il codice HTML. Qualcuno può aiuto a tutti?

Grazie!

È stato utile?

Soluzione 3

Il cervello è una cosa divertente, e nonostante la spesa diverse ore su questo ieri, ha preso il mio cane mi svegliarsi nel mezzo della notte per un wee per il mio subconscio per inciampare sulla risposta.

Se questo qualcuno ha avuto altro perplesso, non mi stupisce. Io non avevo parlato perché non era venuto in mente che stavo usando un sistema di caching parziale livello simile a quello progettato da Steve Sanderson. E improvvisamente mi ha colpito che questo potrebbe essere la causa, dal momento che per quanto di mia conoscenza pagine Razor passano molto meno pipeline di elaborazione di pagine WebForm. Il filtro di cache non è probabilmente facendo quello che deve fare, o al momento giusto.

Ho confermato che commentando il filtro OutputCache sulle azioni in questione ha risolto il problema.

Non ho idea se questo numero è vero per la memorizzazione nella cache a livello di pagina, come non è qualcosa che trovo utile.

Altri suggerimenti

Inserire un layout = null sulla vista parziale e funzionerà bene.

Prova questo:

@ {Html.RenderAction ( "LatestBlogsMainPanelWidget", "blog");}

Durante la ricerca di soluzioni per questo problema, devo scoprire tre punti di misura per non corretta prestazione di Html.Action e Html.RenderAction. Si prega di verificare hai fatto seguito le cose correttamente o meno.

  1. Nella tua PartialView o Visualizza è stato definito @ {Piano = null;} .
  2. Usa ritorno PartialView al posto di Visualizza .
  3. Decora il tuo azione con [ChildActionOnly] attributi.

spero applicando sopra tutti i passaggi si possono risolvere i vostri problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top