2013-02-14 18 views
12

Tôi muốn có mã html này, nơi một điều kiện ("myBool") là đúng:MVC/Razor: Conditional lồng html tag

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

và điều này một khi nó sai:

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

tôi không những gì để whave viết se cùng một mã ("chất liệu khác") hai lần vì vậy tôi cố gắng này:

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

nhưng tôi nhận được lỗi biên dịch.

Bạn có thấy làm thế nào tôi có thể làm những gì tôi muốn mà không cần phải làm somethig như thế:

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

Cảm ơn bạn.

Trả lời

32

Sau đây có thể làm việc bằng cách sử dụng toán tử @::

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

    @sometext 

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

    ... other stuffs 

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

hoặc bạn cũng có thể thử như sau:

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

    ... other stuffs 

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

Cảm ơn Tôi không biết @: nhà điều hành! – Sharpac

+0

Cảm ơn rất nhiều @Darin Dimitrov –

+0

Làm việc hoàn hảo cho tôi. Cảm ơn! –