2013-02-14 14 views
12

Mi piacerebbe avere questo codice html in cui una condizione ("myBool") è vero:MVC/Rasoio: Conditional tag html nidificato

<div> 
    <fieldset> 
    <legend> 
     @sometext 
    </legend> 
    ... other stuffs 
    </fieldset> 
<div> 

e questo quando è falsa:

<div> 
    <b> 
    @sometext 
    </b> 
    ... other stuffs 
<div> 

I dont cosa whave scrivere se stesso codice ("altri animali") due volte quindi ho provato questo:

<div> 
@if(myBool) 
{ 
    <fieldset> 
    <legend> 
} 
else 
{ 
    <b> 
} 
@sometext 
if (myBool) 
{ 
    </legend> 
} 
else 
{ 
    </b> 
} 
...other stuff 
if (myBool) 
{ 
    </fieldset> 
} 
</div> 

ma ottengo errori di compilazione.

Vedete come avrei potuto fare quello che voglio, senza dover fare somethig del genere:

@if(myBool) 
{ 
    <div> 
    <fieldset> 
     <legend> 
     @sometext 
     </legend> 
     ... other stuffs 
    </fieldset> 
    <div> 
} 
else 
{ 
    <div> 
    <b> 
     @sometext 
    </b> 
    ... other stuffs 
    <div> 
} 

Grazie.

risposta

32

Quanto segue potrebbe funzionare utilizzando l'operatore @::

<div> 
    @if (someCondition) 
    { 
     @:<fieldset> 
      @:<legend> 
    } 
    else 
    { 
     @:<b> 
    } 

    @sometext 

    if (someCondition) 
    { 
     @:</legend> 
    } 
    else 
    { 
     @:</b> 
    } 

    ... other stuffs 

    @if (someCondition) 
    { 
     @:</fieldset> 
    } 
</div> 

oppure si potrebbe anche provare quanto segue:

<div> 
    @Html.Raw(someCondition ? "<fieldset><legend>" : "<b>") 
    @sometext 
    @Html.Raw(someCondition ? "</legend>" : "</b>") 

    ... other stuffs 

    @if (someCondition) 
    { 
     @:</fieldset> 
    } 
</div> 
+0

Grazie non ho conosciuto il @: operatore! – Sharpac

+0

Grazie mille @Darin Dimitrov –

+0

ha funzionato perfettamente anche per me. Grazie! –