2012-05-21 32 views
4

使用剃鬚刀我想根據我的模型的布爾屬性有條件地將一些內容包裝在<span>元素中。我的猜測是,我將需要使用Templated Razor Delegates,但我發現很難讓它們正確。有條件地用剃刀幫手包裝內容

我的模型去是這樣的:

public class Foo 
{ 
    public bool IsBar { get; set; } 
} 

在我看來,我希望能夠使用類似於:

<a href="/baz"> 
    @Html.WrapWith(Model.IsBar, "span", @This content may be wrapped, or not) 
</a> 

它會使:

<!-- Model.IsBar == True --> 
<a href="/baz"> 
    <span>This content may be wrapped, or not</span> 
</a> 

<!-- Model.IsBar == False--> 
<a href="/baz"> 
    This content may be wrapped, or not 
</a> 

回答

1

你可以做一個如果在你的編輯器模板視圖與剃刀

@if(Model.IsBar) 
{ 
     <span>This content may be wrapped, or not</span> 
} 
else 
{ 
     This content may be wrapped, or not 
} 

UPDATE

,或者你可以做你的自定義幫手

@helper Foo(bool bar) 
{ 
    @if(bar) 
    { 
     <span>This content may be wrapped, or not</span> 
    } 
    else 
    { 
     This content may be wrapped, or not 
    } 

} 
+0

是啊 - 這是我可以回退到,但如​​果我用這全部在我看來它會增加視覺混亂,所以我想成爲你的助手 –

+0

你可以做你的自己的幫手 – Jorge

+0

是的 - 這是我不能解決問題的方法 –

3

我總是會與跨包的內容,並讓CSS處理所有的顯示邏輯,如果有的話

<a href="/baz"> 
    <span class="@(Model.IsBar ? "bar" : "")">This content may be wrapped, or not</span> 
</a> 

並將css規則應用於.bar

span.bar 
{ 
    //some style rules 
} 
+0

不幸的是,這仍然以''呈現給瀏覽器 –

+1

@PhilPeace,這是我的答案。我總是會將瀏覽器呈現給瀏覽器,如果我需要應用任何額外的表示邏輯,我會用css來控制它 – archil