2012-04-19 11 views
8

की संपत्ति में आधारित div वर्ग बदलें मैं ट्विटर बूटस्ट्रैप में आधारित एक पृष्ठ बना रहा हूं।व्यूमोडेल

एक विशिष्ट CUD में, मैं एक div के एक वर्ग को बदलने की जरूरत। मेरे व्यूमोडेल की संपत्ति के आधार पर class="tab-pane active" या class="tab-pane"

संपत्ति शायद एक इंट होगी, और फिर प्रत्येक div के लिए, मैं सक्रिय टैब पर सत्यापन कर दूंगा। यह सही लगता है?

मैं की तरह कुछ में सोचा:

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

लेकिन स्पष्ट रूप से इस

+0

रूप ActiveTab का मूल्य है rible टैग सूप एक कस्टम HTML सहायक बारे में अपेक्षित होना? –

उत्तर

10

इस तरह का प्रयास करें:

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

या इस hor से बचने के लिए

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 मेरे उत्तर से बेहतर: डी –

2

काम नहीं किया यह काम करना चाहिए:

<div class="@(Model.ActiveTab == 1 ? "tab-pane active" : "tab-pane")" id="1"> 
संबंधित मुद्दे