2011-01-28 68 views
0

在我的網頁有時我用下面的HTML標籤菜單:頁ASP.net如何設計這個最佳

<div class="tabWrapper"> 
    <div class="tab tabSelected"><a href="artworkHome.aspx">Home</a></div> 
    <div class="tab"><a href="#">Create New</a></div> 
    <div class="tab"><a href="#">Help!</a></div> 
    <div class="clear"></div> 
</div> 

不同的羣體有不同的標籤明顯。但是,將這些標籤寫入頁面的最佳方法是,無需每次都使用HTML手動執行此操作,這樣,如果我想添加標籤頁,我不必通過每個頁面來確保它們都是相同的?

我應該自己控制嗎?以模塊化方式加載這些選項卡的最佳方式是什麼?我是否應該擁有一個擁有所有選項卡組並構建HTML的類?

感謝您的幫助!

回答

2

如果它們是靜態控件,則最好在自定義ascx控件中創建Html並在頁面上動態加載它們。一旦它們被創建,你應該看看使用OutputCache指令,這將加快頁面渲染。

2

也許就像一個用戶控件:

public partial class TabControl : System.Web.UI.UserControl 
{ 
    public List<TabObject> TabObjects { get; set; } 

    public override void RenderControl(HtmlTextWriter writer) 
    { 
     writer.Write("<div class=\"tabWrapper\">"); 
     foreach (var item in TabObjects) 
     { 
      writer.Write("<div class=\"tab{0}\"><a href=\"{1}\">{2}</a></div>", (item.Selected) ? " tabSelected" : "", item.Link, item.Name); 
     } 
     writer.Write("<div class=\"clear\"></div>"); 
     writer.Write("</div>"); 

     base.RenderControl(writer); 
    } 
} 

的TabObject類:

public class TabObject 
{ 
    public string Name { get; set; } 
    public string Link { get; set; } 
    public bool Selected { get; set; } 
} 

而在你的頁面:

 UcTabControl.TabObjects = new List<TabObject>() 
     { 
      new TabObject(){ 
       Link = "artworkHome.aspx", 
       Name = "Home", 
       Selected = true 
      }, 
      new TabObject(){ 
       Link = "#", 
       Name = "Create New", 
       Selected = false 
      }, 
      new TabObject(){ 
       Link = "#", 
       Name = "Help!", 
       Selected = false 
      }, 
     }; 

輸出將是:

<div class="tabWrapper"> 
    <div class="tab tabSelected"><a href="artworkHome.aspx">Home</a></div> 
    <div class="tab"><a href="#">Create New</a></div> 
    <div class="tab"><a href="#">Help!</a></div> 
    <div class="clear"></div> 
</div> 
+0

非常感謝代碼 – 2011-01-28 11:38:59