2012-04-19 136 views
8

我正在創建基於Twitter引導的頁面。更改基於ViewModel屬性的div類

在一個特定的CUD中,我需要更改一個div類。 class="tab-pane active"class="tab-pane",這取決於我的viewmodel的屬性。

該屬性可能是一個int,然後對於每個div,我將在活動選項卡上進行驗證。這聽起來正確嗎?

我想在這樣的:

<div(@Model.ActiveTab == 1 ? class="tab-pane active" : class="tab-pane") id="1"> 

但顯然這並不工作

+0

IS作爲ActiveTab的價值預期? – 2012-04-19 13:41:53

回答

10

嘗試這樣的:

<div class="tab-pane @(Model.ActiveTab == 1 ? " active" : "")" id="1"> 
    ... 
</div> 

或者爲了避免這種情況rible標籤湯編寫自定義的HTML幫助:

public static class TabExtensions 
{ 
    private class TabControl: IDisposable 
    { 
     private readonly ViewContext _viewContext; 
     public TabControl(ViewContext viewContext) 
     { 
      _viewContext = viewContext; 
     } 

     public void Dispose() 
     { 
      _viewContext.Writer.Write("</div>"); 
     } 
    } 

    public static IDisposable Tab(this HtmlHelper htmlHelper, bool active, object htmlAttributes) 
    { 
     var div = new TagBuilder("div"); 
     div.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 
     div.AddCssClass("tab-pane"); 
     if (active) 
     { 
      div.AddCssClass("active"); 
     } 
     htmlHelper.ViewContext.Writer.Write(div.ToString(TagRenderMode.StartTag)); 
     return new TabControl(htmlHelper.ViewContext); 
    } 
} 

可能這樣使用:

@using (Html.Tab(Model.ActiveTab == 1, new { id = "tab1" })) 
{ 
    ... 
} 

,並在這種情況下會發出:

<div class="tab-pane active" id="tab1"> 
    ... 
</div> 
+1

+1比我的答案好:D – 2012-04-20 07:20:13

2

這應該工作:

<div class="@(Model.ActiveTab == 1 ? "tab-pane active" : "tab-pane")" id="1">