2011-03-22 238 views
0

我已經創建了一個asp.net mvc2項目使用標準的視覺工作室模板,其中包含2個選項卡主頁和關於。asp.net mvc標籤內標籤

在主頁選項卡我想從這裏http://labs.silverorange.com/archive/2003/september/simplecsstabs

添加子選項卡我如何做到這一點:我可以創建子組件和子控制器還是什麼?

我在asp.net和MVC的初學者,所以不能有一個初學者的解決方案儘可能接近普通的css選項卡?

回答

1

您可以編寫一個自定義HTML幫助程序,它將根據當前控制器和操作生成這些子選項卡。這裏有一個例子讓你開始:

public static class HtmlExtensions 
{ 
    public static MvcHtmlString SubTabs(this HtmlHelper htmlHelper) 
    { 
     var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action"); 
     var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller"); 

     // TODO: base on the current action and controller 
     // generate proper tabs  

     var ul = new TagBuilder("ul"); 
     var lis = new StringBuilder(); 
     var li = new TagBuilder("li"); 
     li.InnerHtml = htmlHelper.ActionLink("sub 1", "sub1", "home").ToHtmlString(); 
     lis.AppendLine(li.ToString()); 
     li = new TagBuilder("li"); 
     li.InnerHtml = htmlHelper.ActionLink("sub 2", "sub2", "home").ToHtmlString(); 
     lis.AppendLine(li.ToString()); 

     ul.InnerHtml = lis.ToString(); 
     return MvcHtmlString.Create(ul.ToString()); 
    } 
} 

,然後在您的視圖:

<%= Html.SubTabs() %> 

很顯然,在我的例子一切都是硬編碼。您可能希望保留一些與給定的控制器和操作相對應的子選項卡的集中式哈希表。一旦你得到正確的標記,只需從你提到的問題中提到的網站申請CSS,你就可以走了。

+0

謝謝你會研究它。但我是asp.net和MVC的初學者,我很難理解,不能有更接近普通css選項卡的初學者解決方案嗎? – user310291 2011-03-22 18:02:58

+0

@ user310291,您始終可以在視圖中對HTML進行硬編碼,而不像示例文章中那樣使用任何助手。我剛剛展示瞭如何實施更加動態的解決方案。 – 2011-03-22 18:04:30