C'è un modo per utilizzare qualcosa come all'interno di viste parziali che vengono resi con RenderAction?

StackOverflow https://stackoverflow.com/questions/4742255

Domanda

Nella mia applicazione web ASP.NET MVC 2, ho utilizzare RenderAction per visualizzare HTML in quello che io chiamo l'area "messaggio flash" del sito web. Per area flash, voglio dire una zona evidenziata vicino alla parte superiore che contiene un messaggio relativo al precedente richiesta, come ad esempio Hello <%: Html.DisplayTextFor(m => m.Username) %> quando l'utente accede.

Un messaggio flash che sto lavorando è un po 'più complessa. Ha bisogno di aggiungere un blocco di codice Javascript per la risposta, ma voglio mettere l'elemento script prima del tag di chiusura </body> come raccomandato nel libro High performance JavaScript .

In una vista normale, io uso <asp:Content ContentPlaceHolderID="FlashScriptElements" runat="server"><script> ... </script></asp:Content> ad elementi posto script in fondo alla pagina. Purtroppo, se tento lo stesso in una vista parziale che viene reso con RenderAction, ottengo l'errore del parser "controlli contenuti devono essere i controlli di primo livello in una pagina di contenuto o una pagina master nidificate che i riferimenti una pagina master".

C'è qualcosa di simile <asp:Content> che posso usare in viste parziali che inserire il contenuto nel punto corrispondente della pagina master?

È stato utile?

Soluzione

<asp:Content> non è supportata con RenderAction perché RenderAction equivale ad avere il codice che esegue il metodo di azione del bambino, si sono riuniti la risposta, e poi incollato in vista del metodo di genitore.

Che cosa si potrebbe fare è quello di aggiungere gli script che avete bisogno di un posto per la raccolta HttpContextBase.Items. Poi, nel tuo pagina master a destra prima della fine del documento recuperare gli script registrati e stamparli.

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