ASP.net индивидуальный дизайн пользовательского элемента управления


Я создал пользовательский элемент управления, который генерирует вкладка "навигация" стиль. Каждая страница может иметь различные вкладки для отображения, цель modularise его, поэтому я могу вносить глобальные изменения на всех вкладках.

TabMenu.ascx и

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TabMenu.ascx.cs" Inherits="TabMenu" %>

<asp:Panel runat="server" ID="TabMenuWrapper" CssClass="tabWrapper">

</asp:Panel>

TabMenu.ascx вносятся.в CS

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;

public partial class TabMenu : System.Web.UI.UserControl
{
    public string TabGroup { get; set; }    // The tab group this control belongs to
    public int SelectedTab { get; set; }    // Index of selected tab

    protected void Page_Load(object sender, EventArgs e)
    {
        ArrayList tabCollection = new ArrayList();
        MenuTab myTab;

        // Artorking tab group
        if (this.TabGroup.ToLower() == "artwork")
        {
            myTab = new MenuTab() { linkURL = "artworkHome.aspx", linkText = "First!" };
            tabCollection.Add(myTab);

            myTab = new MenuTab() { linkURL = "artworkHome.aspx", linkText = "Second!" };
            tabCollection.Add(myTab);

            myTab = new MenuTab() { linkURL = "artworkHome.aspx", linkText = "3rd!" };
            tabCollection.Add(myTab);

            myTab = new MenuTab() { linkURL = "artworkHome.aspx", linkText = "Fourth!" };
            tabCollection.Add(myTab);            
        }

        // Add tabs to the page
        for (int i = 0; i < tabCollection.Count; i++)
        {
            MenuTab thisTab = ((MenuTab)(tabCollection[i]));
            thisTab.CreateTab();

            if (i == this.SelectedTab)
            {
                thisTab.tabPanel.CssClass = "tab tabSelected";
            }

            TabMenuWrapper.Controls.Add(thisTab.tabPanel);
        }
        TabMenuWrapper.Controls.Add(new Panel(){CssClass = "clear"});

    }
}

// A menu tab
public class MenuTab
{
    public string linkURL;
    public string linkText;
    public HyperLink tabLink;
    public Panel tabPanel;

    // Create internal controls
    public void CreateTab()
    {
        this.tabLink = new HyperLink() { NavigateUrl = this.linkURL, Text = this.linkText };
        this.tabPanel = new Panel() { CssClass = "tab" };
        this.tabPanel.Controls.Add(this.tabLink);
    }
}

Используется следующим образом:

<CrystalControls:TabMenu runat="server" ID="TopMenu" TabGroup="Artwork" SelectedTab="1" />

И отображается как:

<div class="tab">

  <a href="Controls/artworkHome.aspx">First!</a>

 </div><div class="tab tabSelected">

  <a href="Controls/artworkHome.aspx">Second!</a>

 </div><div class="tab">

  <a href="Controls/artworkHome.aspx">3rd!</a>

 </div><div class="tab">

  <a href="Controls/artworkHome.aspx">Fourth!</a>

 </div><div class="clear">



 </div>

</div>

Это хороший дизайн?



2402
9
задан 28 января 2011 в 12:01 Источник Поделиться
Комментарии
2 ответа

Это может быть лучше, чтобы представить управление в виде неупорядоченного списка. Это более семантически правильный и нормальная практика для меню-тип управления (вкладки, если вдуматься).

5
ответ дан 28 января 2011 в 08:01 Источник Поделиться

Да, дизайн выглядит хорошо, но было бы лучше, если бы вы могли заменить, что ArrayList с универсальной коллекцией.

4
ответ дан 28 января 2011 в 05:01 Источник Поделиться