Asp.net 菜單控件簡潔版
2024-07-10 12:38:29
供稿:網友
本文介紹的菜單控件采用的css 和ul list來顯示菜單,生成的html小,無需javascript支持,對大部分的瀏覽器都支持,除ie6要單獨修改css也可以使其支持。
通過本文可以了解asp.net 控件的開發,及Composite設計模式的實際運用。
采用Composite設計模式設計菜單類:
MenuCompositeitem類
代碼如下:
namespace Ruinet.Controls
{
[Serializable()]
public class MenuCompositeItem
{
private List<MenuCompositeItem> _children = new List<MenuCompositeItem>();
private string _text;
private string _link;
private string _target;
/// <summary>
/// 菜單項
/// </summary>
/// <param name="text">菜單名</param>
/// <param name="link">鏈接</param>
public MenuCompositeItem(string text, string link)
{
this._text = text;
this._link = link;
}
/// <summary>
/// 菜單項
/// </summary>
/// <param name="text">菜單名</param>
/// <param name="link">鏈接</param>
/// <param name="target">跳轉目標</param>
public MenuCompositeItem(string text, string link, string target)
{
this._text = text;
this._link = link;
this._target = target;
}
/// <summary>
/// 設置或獲取菜單名
/// </summary>
public string Text
{
get { return _text; }
set { _text = value; }
}
/// <summary>
/// 設置或獲取鏈接
/// </summary>
public string Link
{
get { return _link; }
set { _link = value; }
}
/// <summary>
/// 跳轉目標
/// </summary>
public string Target
{
get { return _target; }
set { _target=value; }
}
/// <summary>
/// 設置或獲取子菜單
/// </summary>
public List<MenuCompositeItem> Children
{
get { return _children; }
set { _children = value; }
}
}
MenuComposite類
代碼如下:
namespace Ruinet.Controls
{
[DefaultProperty("Menu")]
[ToolboxData("<{0}:MenuComposite runat=server></{0}:MenuComposite>")]
public class MenuComposite : WebControl
{
/// <summary>
/// 設置獲取選擇的菜單
/// </summary>
[Bindable(true)]
[DefaultValue("")]
[Localizable(true)]
public string SelectedMenuText
{
get
{
String s = (String)ViewState["SelectedMenuText"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["SelectedMenuText"] = value;
}
}
/// <summary>
/// 獲取和設置菜單項從ViewState
/// </summary>
[Bindable(true)]
[DefaultValue(null)]
[Localizable(true)]
public MenuCompositeItem MenuItems
{
get
{
return ViewState["MenuItems"] as MenuCompositeItem;
}
set
{
ViewState["MenuItems"] = value;
}
}
/// <summary>
/// 呈現菜單結構