2012-06-25 9 views
6

Sto tentando di visualizzare una vista parziale utilizzando un metodo di supporto personalizzato. L'unico problema è che non riesco a superare questo problema di sintassi. Il modello impostato per questo file cshtml è una collezione IEnumerable di modelli che ho definito Operazione. Sono sicuro che questa è una soluzione facile. Ecco un esempio di quello che sto vedendo:Problema di sintassi- Razor MVC4

ho questo blocco di codice:

@using(Html.BeginForm()) { 
     <div id="editor_rows"> 
      @foreach (var item in Model){ 
      Html.RenderPartial("OperationEditorRow", item); 
      } 
     </div> 
    } 

Questo mi dà il seguente errore in fase di esecuzione:

Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code. 

Ma se mi tolgo la @ firmare davanti all'istruzione foreach, tutto è interpretato come testo normale. Così ho provato mettendo un @ davanti Html come segue:

@using(Html.BeginForm()) { 
     <div id="editor_rows"> 
      @foreach (var item in Model){ 
      @Html.RenderPartial("OperationEditorRow", item); 
      } 
     </div> 
    } 

Questo ritorna con un errore di compilazione che dice:

Cannot implicitly convert type void to object 

Se eseguo il progetto da qui, ottengo un errore di runtime che dice:

The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 

Suppongo che questo sia correlato all'errore precedente. Se qualcuno ha un suggerimento per me, per favore aiutatemi. s 'intorno alla vostra chiamata di rendering come @ {...} RenderPartial

+0

Prova a usare 'Parziale 'invece di' RenderPartial' – lucask

+0

Il tuo codice sembra giusto. Prova a riavviare Visual Studio. Questo è stato sapere per risolvere una serie di anomalie come questa. –

+0

Grazie per entrambi i tuoi suggerimenti. Li ho provati, ma vedo ancora gli stessi errori. Penso che il cuore del problema sia nel secondo messaggio di errore: Impossibile convertire in modo implicito il tipo void all'oggetto –

risposta

1

Problema risolto

0

Add {}. Ho lavorato su questo con un collega. Si scopre che l'errore refferring al metodo di scrittura indicava un problema nella mia vista parziale. Stavo usando @ {} attorno a un blocco di codice all'interno di lì, che molto probabilmente lanciava anche gli altri errori di sintassi. Grazie per le risposte.

+0

Grazie per la risposta, ma quando lo faccio, vedo ancora lo stesso errore di sintassi di prima: Inaspettato "{ "dopo" @ "carattere. Una volta all'interno del corpo di un blocco di codice (@if {}, @ {}, ecc.) Non è necessario utilizzare "@ {" per passare al codice. –

Problemi correlati