2012-07-03 10 views
6

sto cercando di capire perché quando faccio questo a mio avviso, si ottiene un erroreRazor @ {...} @ vs chiamando RenderPartial

@Html.RenderPartial("MyPartial", Model); 

Errore di compilazione Descrizione: Si è verificato un errore durante la la compilazione di una risorsa necessaria per soddisfare questa richiesta. Si prega di rivedere i seguenti dettagli di errore specifici e modificare il codice sorgente in modo appropriato.

compilatore messaggio di errore: CS1502: La partita metodo migliore overload per 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' ha alcuni argomenti non validi

Ma quando ho fai questo, il partial rende bene

@{ 
    Html.RenderPartial("MyPartial", Model); 
} 

Qualcuno sa perché il primo esempio fallisce?

+6

Controlla questa risposta ..: http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction – Chandu

+0

L'unica chiamata di linea è principalmente per l'output di dati (come @ DateTime.Now) o pura logica C# (come @ model.ID! = 0? sì: no). I codici di blocco sono per l'elaborazione dell'API, come la chiamata a una vista parziale o altre operazioni più sofisticate. Si noti che l'errore indica la scrittura di un Helper nella pagina. –

+0

Duplicato. Questo è essenzialmente lo stesso della domanda collegata da @Chandu. –

risposta

7

E 'fondamentalmente il fatto che questo formato ...

@Html.RenderPartial("MyPartial", Model) 

... viene utilizzato per le funzioni che non restituiscono void, dal momento che RenderPartial fa ritorno void, si ottiene questo errore.

Invece, in questo blocco, è solo l'esecuzione di codice (che internamente effettuare la chiamata scrittura):

@{  
Html.RenderPartial("MyPartial", Model); 
} 

È possibile chiamare alternativelly

@Html.Partial("MyPartial") 

... che fa tornare la stringa .

Problemi correlati