2013-02-14 12 views
12

Chciałbym mieć ten kod html w których warunek ("myBool") jest prawdziwe:MVC/Razor: Warunkowe zagnieżdżona html tag

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

a ten, gdy jest fałszywa:

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

dont co whave napisać se sam kod ("inne spożywczych"), dwukrotnie więc próbowałem to:

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

ale pojawiają się błędy kompilacji.

Czy widzisz w jaki sposób mogę zrobić co chcę bez konieczności zrobić somethig tak:

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

Dziękuję.

Odpowiedz

32

Poniższa może działać za pomocą operatora @::

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

    @sometext 

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

    ... other stuffs 

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

lub można też spróbować wykonać następujące czynności:

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

    ... other stuffs 

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

Dzięki nie znał @: operator! – Sharpac

+0

Wielkie dzięki @Darin Dimitrov –

+0

Sprawdziło się również dla mnie. Dzięki! –