2012-10-02 10 views

risposta

14

The Razor parser è stato ri-scritto per MVC 4, presumably because:

The HTML5-specs clearly states that unclosed HTML-tags are supported, but Razor v1 didn't have an advanced enough parser to support this. Razor v2 now supports this with the elements listed in W3C's spec.

La soluzione più semplice è quella di aggiungere un singolo spazio prima del @ simbolo:

<td @Html.Raw(count == null ? null : " class='has-item'")> 

attributi Tuttavia, condizionali in Razor con MVC 4 hanno una sintassi più elegante.

<td class="@(count == null ? null : "has-item")"> 

Quando un valore di attributo risolve null, l'attributo è omesso dall'elemento. Così l'uscita di questo sovrapprezzo è o:

<td> 

... o ...

<td class="has-item"> 
1

Il parser Razor di MVC4 è diverso da MVC3. Razor v3 ha avanzate funzionalità di parser e, al contrario, un'analisi rigorosa confronta con MVC3.

È possibile che si verifichi un errore di sintassi durante la conversione da MVC3 a MVC4 se non si sono utilizzate le sintassi del rasoio in modo corretto.

Soluzione di alcuni errori di codice rasoio comuni che non sono autorizzati a Razor v2 sono:

-> Evitare di utilizzare blocchi di server in vista a meno che non ci sia la sezione dichiarazione di variabile.

Don’t : @{if(check){body}} 
Recommended : @if(check){body} 

-> Evitare di utilizzare @ quando si è già in ambito server.

Don’t : @if(@variable) 
Recommended : @if(variable) 

Don't : @{int a = @Model.Property } 
Recommended : @{int a = Model.Property } 
Problemi correlati