2013-02-14 73 views
12

我想有这样的HTML代码,其中一个条件( “myBool”)为真:MVC /剃刀:有条件的嵌套的HTML标签

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

而这一次,当它是假的:

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

我不什么whave写SE相同的代码(“其他东西”),所以两次我尝试这样做:

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

,但我得到编译错误。

你看我怎么可以做我想做的,而不必做somethig这样的:

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

谢谢。

回答

32

下可能工作使用@:操作:

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

    @sometext 

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

    ... other stuffs 

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

,或者您也可以尝试以下操作:

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

    ... other stuffs 

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

感谢我没有知道@:运营商! – Sharpac 2013-02-14 17:27:31

+0

非常感谢@Darin Dimitrov – 2014-07-30 08:55:34

+0

我的工作也很完美。谢谢! – 2016-06-22 18:38:13