2015-07-20 6 views
5

Perché quando ho un determinato codice HTML nelle mie istruzioni C# Rasoio si lamenta di espressioni e termini non validi?Come includere l'HTML all'interno dell'istruzione Se

E come posso risolvere questo?

Ad esempio; nel mio _layout.cshtml:

@if (Team.Id == ViewBag.TeamId) 
{ 
    </div> 
    <div class="row"> 
    &nbsp; 
} 
+0

Come @RowanFreeman ha indicato, in fuga il codice HTML con '@:' è uno modo per aggirare questo. Se sei in grado di fornire più contesto su quello che stai facendo (quali sono i tuoi dati, qual è il risultato di markup desiderato), scommetterei che qualcuno potrebbe inventare una soluzione che non implicasse doversi preoccupare di ciò. – jdphenix

+0

Un'altra opzione sarebbe quella di connettere il div finale al div iniziale e viceversa. Il codice estratto è un po 'anti-pattern da cui provengo mentre dividi un div in un posto apparentemente casuale. – holroy

risposta

8

Rasoio in realtà cerca di capire il tuo codice HTML. Sfortunatamente non può essere molto intelligente e riconoscere codice dinamico o codice al di fuori dell'espressione.

Dal

</div> 
<div> 

è valido HTML, si lamenta.

è possibile evitare questo problema utilizzando @:

Questa forze rasoio per bypassare il suo "riconoscimento HTML", e semplicemente stampare quello che stai chiedendo.

E.g.

@if (Team.Id == ViewBag.TeamId) 
{ 
    @:</div> 
    @:<div class="row"> 
    @:&nbsp; 
} 
0

È inoltre possibile utilizzare @Html.Raw("YOUR HTML"); all'interno di una if dichiarazione per aggiungere codice HTML