Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮';s OnClick事件不';t火_C#_Asp.net_Events_Click_Web Controls - Fatal编程技术网

C# 按钮';s OnClick事件不';t火

C# 按钮';s OnClick事件不';t火,c#,asp.net,events,click,web-controls,C#,Asp.net,Events,Click,Web Controls,以下代码是我的ASP.NET页面: <MdsMenu:MenuItem Text="Button" Href="#"> <asp:Button ID="Button1" runat="server" Text="Button 01" OnClick="Button_Click" /> <asp:Button ID="Button2" runat="server" Text="Button 02" OnClick="Button_Click" />

以下代码是我的ASP.NET页面:

<MdsMenu:MenuItem Text="Button" Href="#">
   <asp:Button ID="Button1" runat="server" Text="Button 01" OnClick="Button_Click" />
   <asp:Button ID="Button2" runat="server" Text="Button 02" OnClick="Button_Click" />
</MdsMenu:MenuItem>
MdsMenu:MenuItem是我的自定义网络控件。 如果我在MdsMenu:MenuItem标记中插入一个按钮控件,它工作得很好,但是如果我在MdsMenu:MenuItem标记中插入它,它不会触发相关的方法。 我的代码怎么了

谢谢

编辑:

Menu.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;
using System.Collections;
using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Web.UI.HtmlControls;
using System.IO;

namespace MenuServerControl
{
    [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
    [DefaultProperty("MenuItems")]
    [ParseChildren(true, "MenuItems")]
    [ToolboxData("<{0}:Menu runat=\"server\"> </{0}:Menu>")]
    public class Menu : WebControl
    {
        #region Fields

        private List<MenuItem> _MenuItems;
        string _Direction
        {
            get
            {
                string direction = "";
                switch (this.Direction)
                {
                    case Directions.LeftToRight:
                        direction = "direction:ltr;";
                        break;
                    case Directions.RightToLeft:
                        direction = "direction:rtl;";
                        break;
                    default:
                        direction = "direction:rtl;";
                        break;
                }
                return direction;
            }
        }
        string _AnimationDelay
        {
            get
            {
                if (AnimationDelay == null)
                    AnimationDelay = 1000;
                return AnimationDelay.ToString().ToLower();
            }
        }
        string _AnimationType
        {
            get
            {
                switch (this.AnimationType)
                {
                    case AnimationType.Opacity_Height:
                        return "animation:{opacity:'show',height:'show'}";
                    case AnimationType.Opacity_Width:
                        return "animation:{opacity:'show',width:'show'}";
                    case AnimationType.Opacity:
                        return "animation:{opacity:'show'}";
                    case AnimationType.Height:
                        return "animation:{height:'show'}";
                    case AnimationType.Width:
                        return "animation:{width:'show'}";
                    case AnimationType.Height_Toggle:
                        return "animation: {height: 'toggle'}";
                    case AnimationType.Width_Toggle:
                        return "animation: {width: 'toggle'}";
                    default:
                        return "animation:{opacity:'show',height:'show'}";
                }
            }
        }
        string _AnimationSpeed
        {
            get
            {
                switch (this.AnimationSpeed)
                {
                    case AnimationSpeed.Fast:
                        return "speed:'fast'";
                    case AnimationSpeed.Normal:
                        return "speed:'normal'";
                    case AnimationSpeed.Slow:
                        return "speed:'slow'";
                    default:
                        return "speed:'fast'";
                }
            }
        }
        string FloatStyle
        {
            get
            {
                if (Direction == Directions.RightToLeft)
                    return "float:right;";
                else return "";
            }
        }
        string _Main_ul_CssClass = "";

        #endregion

        #region Properties

        public string Main_ul_CssClass
        {
            get
            {
                if (string.IsNullOrEmpty(_Main_ul_CssClass)) return "";
                _Main_ul_CssClass = "class=" + _Main_ul_CssClass;
                return _Main_ul_CssClass;
            }

            set
            {
                _Main_ul_CssClass = value.Trim();
            }
        }

        public Directions Direction { get; set; }

        public int? AnimationDelay { get; set; }

        public AnimationType AnimationType { get; set; }

        public AnimationSpeed AnimationSpeed { get; set; }

        public bool DropShadow { get; set; }

        public bool AutoArrows { get; set; }

        [Category("Behavior")]
        [Description("The menu collection")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
        public List<MenuItem> MenuItems
        {
            get
            {
                if (_MenuItems == null)
                    _MenuItems = new List<MenuItem>();
                return _MenuItems;
            }
        }

        public VerOrHor VerticalOrHorizontal { get; set; }

        #endregion

        #region Methods

        public Menu()
        {
            DropShadow = true;
            AutoArrows = true;
        }

        public override void RenderBeginTag(HtmlTextWriter writer)
        {
            writer.Write("<div id=\"" + this.ID + "\" style=\"" + _Direction + " " + FloatStyle + "\">");
        }

        public override void RenderEndTag(HtmlTextWriter writer)
        {
            writer.Write("</div>");
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            #region Adding Script & link Tags

            HtmlGenericControl jquery = new HtmlGenericControl("script");
            jquery.Attributes.Add("type", "text/javascript");
            jquery.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(MenuServerControl.Menu), "MenuServerControl.JavaScriptFiles.jquery_1_4_3.js"));
            jquery.EnableViewState = false;
            Page.Header.Controls.Add(jquery);

            HtmlGenericControl hoverIntent = new HtmlGenericControl("script");
            hoverIntent.Attributes.Add("type", "text/javascript");
            hoverIntent.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.hoverIntent.js"));
            hoverIntent.EnableViewState = false;
            Page.Header.Controls.Add(hoverIntent);

            HtmlGenericControl jquery_bgiframe_min = new HtmlGenericControl("script");
            jquery_bgiframe_min.Attributes.Add("type", "text/javascript");
            jquery_bgiframe_min.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.jquery_bgiframe_min.js"));
            jquery_bgiframe_min.EnableViewState = false;
            Page.Header.Controls.Add(jquery_bgiframe_min);

            HtmlGenericControl superfish = new HtmlGenericControl("script");
            superfish.Attributes.Add("type", "text/javascript");
            superfish.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.superfish.js"));
            superfish.EnableViewState = false;
            Page.Header.Controls.Add(superfish);

            HtmlGenericControl supersubs = new HtmlGenericControl("script");
            supersubs.Attributes.Add("type", "text/javascript");
            supersubs.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.supersubs.js"));
            supersubs.EnableViewState = false;
            Page.Header.Controls.Add(supersubs);

            if (Direction == Directions.LeftToRight)
            {
                HtmlGenericControl csslink = new HtmlGenericControl("link");
                csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.superfish.css"));
                csslink.ID = "NavigationMenu";
                csslink.Attributes.Add("type", "text/css");
                csslink.Attributes.Add("rel", "stylesheet");
                csslink.EnableViewState = false;
                Page.Header.Controls.Add(csslink);
            }
            else
            {
                HtmlGenericControl csslink = new HtmlGenericControl("link");
                csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.RightToLeft superfish.css"));
                csslink.ID = "NavigationMenu";
                csslink.Attributes.Add("type", "text/css");
                csslink.Attributes.Add("rel", "stylesheet");
                csslink.EnableViewState = false;
                Page.Header.Controls.Add(csslink);
            }

            if (this.VerticalOrHorizontal == VerOrHor.Vertical && this.Direction == Directions.RightToLeft)
            {
                HtmlGenericControl csslink01 = new HtmlGenericControl("link");
                csslink01.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.RightToLeft superfish-vertical.css"));
                csslink01.Attributes.Add("type", "text/css");
                csslink01.Attributes.Add("rel", "stylesheet");
                csslink01.EnableViewState = false;
                Page.Header.Controls.Add(csslink01);
            }
            else if (this.VerticalOrHorizontal == VerOrHor.Vertical)
            {
                HtmlGenericControl csslink01 = new HtmlGenericControl("link");
                csslink01.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.superfish-vertical.css"));
                csslink01.Attributes.Add("type", "text/css");
                csslink01.Attributes.Add("rel", "stylesheet");
                csslink01.EnableViewState = false;
                Page.Header.Controls.Add(csslink01);
            }

            #endregion
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(CreateMenuHtmlTags());
        }

        StringBuilder CreateMenuHtmlTags()
        {
            if (this._MenuItems == null)
                throw new Exception("تگ های مربوط به منو را کامل کنید");

            StringBuilder Html = new StringBuilder("");

            #region Add <Script>

            if (String.IsNullOrEmpty(Main_ul_CssClass))
                Html.Append("<script>$(document).ready(function() { $(\"ul.sf-menu\").superfish({pathLevels:    1,");
            else
                Html.Append("<script>$(document).ready(function() { $(\"ul." + Main_ul_CssClass + "\").superfish({ pathLevels:    1,");

            Html.Append("delay:" + _AnimationDelay + ",");
            Html.Append(_AnimationType + ",");
            Html.Append(_AnimationSpeed + ",");
            Html.Append("dropShadows:  " + DropShadow.ToString().ToLower() + ",");
            Html.Append(@"autoArrows:  " + AutoArrows.ToString().ToLower() + "});});</script>");

            #endregion

            if (string.IsNullOrEmpty(Main_ul_CssClass) && VerticalOrHorizontal == VerOrHor.Vertical)
                Html.Append("<ul class=\"sf-menu sf-vertical sf-js-enabled sf-shadow\" id='sample-menu-1'>");
            else if (String.IsNullOrEmpty(Main_ul_CssClass))
                Html.Append("<ul class=\"sf-menu sf-js-enabled sf-shadow\" id='sample-menu-1'>");
            else
                Html.Append("<ul class=\"" + Main_ul_CssClass + "\" id='sample-menu-1'>");

            foreach (MenuItem item in _MenuItems)
            {
                if (item == null) continue;
                if (item.SubMenuItems != null && item.SubMenuItems.Count > 0)
                {
                    Html.Append("<li" + item.li_CssClass + ">");
                    Html.Append("<a href=\"" + item.Href + "\">" + item.Text.Trim() + "</a>");
                    ParseSubMenuItems(ref Html, item);
                    Html.Append("</li>");
                }
                else if (item.SubMenuItems != null)
                    Html.Append("<li" + item.li_CssClass + "><a href=\"" + item.Href + "\">" + item.Text.Trim() + "</a></li>");
            }
            Html.Append("</ul>");

            return Html;
        }

        void ParseSubMenuItems(ref StringBuilder Html, MenuItem menuItems)
        {
            if (menuItems == null) return;

            Html.Append("<ul " + menuItems.ul_CssClass + " style=\"display: none; visibility: hidden;\">");

            foreach (var item in menuItems.SubMenuItems)
            {
                if (item == null) continue;

                MenuItem Sub_MenuItem = item as MenuItem;
                WebControl webControl = item as WebControl;

                if (Sub_MenuItem != null)
                {
                    if (Sub_MenuItem.SubMenuItems != null && Sub_MenuItem.SubMenuItems.Count > 0)
                    {
                        Html.Append("<li" + Sub_MenuItem.li_CssClass + ">");
                        Html.Append("<a href=\"" + Sub_MenuItem.Href + "\">" + Sub_MenuItem.Text.Trim() + "</a>");
                        ParseSubMenuItems(ref Html, Sub_MenuItem);
                        Html.Append("</li>");
                    }
                    else if (Sub_MenuItem.SubMenuItems != null)
                        Html.Append("<li" + Sub_MenuItem.li_CssClass + "><a href=\"" + Sub_MenuItem.Href + "\">" + Sub_MenuItem.Text.Trim() + "</a></li>");
                }
                else if (webControl != null)
                {
                    Html.Append("<li>");
                    webControl.EnableViewState = true;
                    this.Controls.Add(webControl);
                    webControl.EnableViewState = true;

                    StringBuilder sb = new StringBuilder();
                    sb.Append("<div>");
                    using (StringWriter sw = new StringWriter(sb))
                    {
                        using (HtmlTextWriter textWriter = new HtmlTextWriter(sw))
                        {
                            webControl.RenderControl(textWriter);
                        }
                    }

                    sb.Append("</div>");

                    Html.Append(sb.ToString());
                    Html.Append("</li>");
                }
            }
            Html.Append("</ul>");
        }

        #endregion
    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用System.Linq;
使用系统文本;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.Security.Permissions;
使用系统集合;
使用System.ComponentModel.Design;
使用系统、绘图、设计;
使用System.Web.UI.HTMLControl;
使用System.IO;
命名空间MenuServerControl
{
[AspNetHostingPermission(SecurityAction.Demand,Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,Level=AspNetHostingPermissionLevel.Minimal)]
[默认属性(“菜单项”)]
[ParseChildren(true,“MenuItems”)]
[ToolboxData(“”)
公共类菜单:网络控制
{
#区域字段
私有列表(菜单项);;
串方向
{
得到
{
字符串方向=”;
开关(此方向)
{
case Directions.LeftToRight:
direction=“direction:ltr;”;
打破
案例说明。右至左:
direction=“direction:rtl;”;
打破
违约:
direction=“direction:rtl;”;
打破
}
返回方向;
}
}
字符串\u动画延迟
{
得到
{
if(AnimationDelay==null)
动画延迟=1000;
返回AnimationDelay.ToString().ToLower();
}
}
字符串\u动画类型
{
得到
{
开关(this.AnimationType)
{
case AnimationType.Opacity\u高度:
返回“动画:{不透明度:'show',高度:'show'}”;
case AnimationType.Opacity\u宽度:
返回“动画:{不透明度:'show',宽度:'show'}”;
大小写动画类型。不透明度:
返回“动画:{opacity:'show'}”;
大小写动画类型。高度:
返回“动画:{height:'show'}”;
大小写动画类型。宽度:
返回“动画:{width:'show'}”;
案例动画类型.Height\u切换:
返回“动画:{height:'toggle'}”;
case AnimationType.Width\u切换:
返回“动画:{width:'切换'}”;
违约:
返回“动画:{不透明度:'show',高度:'show'}”;
}
}
}
字符串动画速度
{
得到
{
开关(this.AnimationSpeed)
{
案例动画速度。快速:
返回“速度:'fast'”;
案例动画速度。正常:
返回“速度:'正常'”;
案例动画速度慢:
返回“速度:'slow'”;
违约:
返回“速度:'fast'”;
}
}
}
字符串浮动样式
{
得到
{
如果(方向==方向。右至左)
返回“float:right;”;
否则返回“”;
}
}
字符串_Main_ul_CssClass=“”;
#端区
#区域属性
公共字符串Main_ul_CssClass
{
得到
{
if(string.IsNullOrEmpty(_Main_ul_CssClass))返回“”;
_Main_ul_CssClass=“class=”+_Main_ul_CssClass;
返回(主)(ul)CssClass ;;
}
设置
{
_Main_ul_CssClass=value.Trim();
}
}
公共方向方向{get;set;}
public int?AnimationDelay{get;set;}
公共AnimationType AnimationType{get;set;}
公共动画速度动画速度{get;set;}
公共bool DropShadow{get;set;}
公共布尔自动箭头{get;set;}
[类别(“行为”)]
[说明(“菜单集合”)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
公共列表菜单项
{
得到
{
如果(_MenuItems==null)
_MenuItems=新列表();
返回菜单项;
}
}
公共垂直或水平{get;set;}
#端区
#区域方法
公共菜单()
{
DropShadow=true;
自动箭头=真;
}
公共覆盖无效RenderBeginTag(HtmlTextWriter编写器)
{
作者:写(“”);
}
公共覆盖无效RenderTag(HtmlTextWriter编写器)
{
作者:写(“”);
}
受保护的覆盖无效OnPreRender(EventArgs e)
{
基于预渲染(e);
#区域添加脚本和链接标记
HtmlGenericControl jquery=新的HtmlGenericControl(“脚本”);
Add(“type”,“text/javascript”);
添加(“src”,Page.ClientScript.GetWebResourceUrl(typeof(MenuServerControl.Menu),“MenuServerControl.JavaScriptFiles.jquery_
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;
using System.Collections;
using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Web.UI.HtmlControls;
using System.IO;

namespace MenuServerControl
{
    [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
    [DefaultProperty("MenuItems")]
    [ParseChildren(true, "MenuItems")]
    [ToolboxData("<{0}:Menu runat=\"server\"> </{0}:Menu>")]
    public class Menu : WebControl
    {
        #region Fields

        private List<MenuItem> _MenuItems;
        string _Direction
        {
            get
            {
                string direction = "";
                switch (this.Direction)
                {
                    case Directions.LeftToRight:
                        direction = "direction:ltr;";
                        break;
                    case Directions.RightToLeft:
                        direction = "direction:rtl;";
                        break;
                    default:
                        direction = "direction:rtl;";
                        break;
                }
                return direction;
            }
        }
        string _AnimationDelay
        {
            get
            {
                if (AnimationDelay == null)
                    AnimationDelay = 1000;
                return AnimationDelay.ToString().ToLower();
            }
        }
        string _AnimationType
        {
            get
            {
                switch (this.AnimationType)
                {
                    case AnimationType.Opacity_Height:
                        return "animation:{opacity:'show',height:'show'}";
                    case AnimationType.Opacity_Width:
                        return "animation:{opacity:'show',width:'show'}";
                    case AnimationType.Opacity:
                        return "animation:{opacity:'show'}";
                    case AnimationType.Height:
                        return "animation:{height:'show'}";
                    case AnimationType.Width:
                        return "animation:{width:'show'}";
                    case AnimationType.Height_Toggle:
                        return "animation: {height: 'toggle'}";
                    case AnimationType.Width_Toggle:
                        return "animation: {width: 'toggle'}";
                    default:
                        return "animation:{opacity:'show',height:'show'}";
                }
            }
        }
        string _AnimationSpeed
        {
            get
            {
                switch (this.AnimationSpeed)
                {
                    case AnimationSpeed.Fast:
                        return "speed:'fast'";
                    case AnimationSpeed.Normal:
                        return "speed:'normal'";
                    case AnimationSpeed.Slow:
                        return "speed:'slow'";
                    default:
                        return "speed:'fast'";
                }
            }
        }
        string FloatStyle
        {
            get
            {
                if (Direction == Directions.RightToLeft)
                    return "float:right;";
                else return "";
            }
        }
        string _Main_ul_CssClass = "";

        #endregion

        #region Properties

        public string Main_ul_CssClass
        {
            get
            {
                if (string.IsNullOrEmpty(_Main_ul_CssClass)) return "";
                _Main_ul_CssClass = "class=" + _Main_ul_CssClass;
                return _Main_ul_CssClass;
            }

            set
            {
                _Main_ul_CssClass = value.Trim();
            }
        }

        public Directions Direction { get; set; }

        public int? AnimationDelay { get; set; }

        public AnimationType AnimationType { get; set; }

        public AnimationSpeed AnimationSpeed { get; set; }

        public bool DropShadow { get; set; }

        public bool AutoArrows { get; set; }

        [Category("Behavior")]
        [Description("The menu collection")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
        public List<MenuItem> MenuItems
        {
            get
            {
                if (_MenuItems == null)
                    _MenuItems = new List<MenuItem>();
                return _MenuItems;
            }
        }

        public VerOrHor VerticalOrHorizontal { get; set; }

        #endregion

        #region Methods

        public Menu()
        {
            DropShadow = true;
            AutoArrows = true;
        }

        public override void RenderBeginTag(HtmlTextWriter writer)
        {
            writer.Write("<div id=\"" + this.ID + "\" style=\"" + _Direction + " " + FloatStyle + "\">");
        }

        public override void RenderEndTag(HtmlTextWriter writer)
        {
            writer.Write("</div>");
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            #region Adding Script & link Tags

            HtmlGenericControl jquery = new HtmlGenericControl("script");
            jquery.Attributes.Add("type", "text/javascript");
            jquery.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(MenuServerControl.Menu), "MenuServerControl.JavaScriptFiles.jquery_1_4_3.js"));
            jquery.EnableViewState = false;
            Page.Header.Controls.Add(jquery);

            HtmlGenericControl hoverIntent = new HtmlGenericControl("script");
            hoverIntent.Attributes.Add("type", "text/javascript");
            hoverIntent.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.hoverIntent.js"));
            hoverIntent.EnableViewState = false;
            Page.Header.Controls.Add(hoverIntent);

            HtmlGenericControl jquery_bgiframe_min = new HtmlGenericControl("script");
            jquery_bgiframe_min.Attributes.Add("type", "text/javascript");
            jquery_bgiframe_min.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.jquery_bgiframe_min.js"));
            jquery_bgiframe_min.EnableViewState = false;
            Page.Header.Controls.Add(jquery_bgiframe_min);

            HtmlGenericControl superfish = new HtmlGenericControl("script");
            superfish.Attributes.Add("type", "text/javascript");
            superfish.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.superfish.js"));
            superfish.EnableViewState = false;
            Page.Header.Controls.Add(superfish);

            HtmlGenericControl supersubs = new HtmlGenericControl("script");
            supersubs.Attributes.Add("type", "text/javascript");
            supersubs.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(Menu), "MenuServerControl.JavaScriptFiles.supersubs.js"));
            supersubs.EnableViewState = false;
            Page.Header.Controls.Add(supersubs);

            if (Direction == Directions.LeftToRight)
            {
                HtmlGenericControl csslink = new HtmlGenericControl("link");
                csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.superfish.css"));
                csslink.ID = "NavigationMenu";
                csslink.Attributes.Add("type", "text/css");
                csslink.Attributes.Add("rel", "stylesheet");
                csslink.EnableViewState = false;
                Page.Header.Controls.Add(csslink);
            }
            else
            {
                HtmlGenericControl csslink = new HtmlGenericControl("link");
                csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.RightToLeft superfish.css"));
                csslink.ID = "NavigationMenu";
                csslink.Attributes.Add("type", "text/css");
                csslink.Attributes.Add("rel", "stylesheet");
                csslink.EnableViewState = false;
                Page.Header.Controls.Add(csslink);
            }

            if (this.VerticalOrHorizontal == VerOrHor.Vertical && this.Direction == Directions.RightToLeft)
            {
                HtmlGenericControl csslink01 = new HtmlGenericControl("link");
                csslink01.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.RightToLeft superfish-vertical.css"));
                csslink01.Attributes.Add("type", "text/css");
                csslink01.Attributes.Add("rel", "stylesheet");
                csslink01.EnableViewState = false;
                Page.Header.Controls.Add(csslink01);
            }
            else if (this.VerticalOrHorizontal == VerOrHor.Vertical)
            {
                HtmlGenericControl csslink01 = new HtmlGenericControl("link");
                csslink01.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl
                    (typeof(Menu), "MenuServerControl.CSS.superfish-vertical.css"));
                csslink01.Attributes.Add("type", "text/css");
                csslink01.Attributes.Add("rel", "stylesheet");
                csslink01.EnableViewState = false;
                Page.Header.Controls.Add(csslink01);
            }

            #endregion
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(CreateMenuHtmlTags());
        }

        StringBuilder CreateMenuHtmlTags()
        {
            if (this._MenuItems == null)
                throw new Exception("تگ های مربوط به منو را کامل کنید");

            StringBuilder Html = new StringBuilder("");

            #region Add <Script>

            if (String.IsNullOrEmpty(Main_ul_CssClass))
                Html.Append("<script>$(document).ready(function() { $(\"ul.sf-menu\").superfish({pathLevels:    1,");
            else
                Html.Append("<script>$(document).ready(function() { $(\"ul." + Main_ul_CssClass + "\").superfish({ pathLevels:    1,");

            Html.Append("delay:" + _AnimationDelay + ",");
            Html.Append(_AnimationType + ",");
            Html.Append(_AnimationSpeed + ",");
            Html.Append("dropShadows:  " + DropShadow.ToString().ToLower() + ",");
            Html.Append(@"autoArrows:  " + AutoArrows.ToString().ToLower() + "});});</script>");

            #endregion

            if (string.IsNullOrEmpty(Main_ul_CssClass) && VerticalOrHorizontal == VerOrHor.Vertical)
                Html.Append("<ul class=\"sf-menu sf-vertical sf-js-enabled sf-shadow\" id='sample-menu-1'>");
            else if (String.IsNullOrEmpty(Main_ul_CssClass))
                Html.Append("<ul class=\"sf-menu sf-js-enabled sf-shadow\" id='sample-menu-1'>");
            else
                Html.Append("<ul class=\"" + Main_ul_CssClass + "\" id='sample-menu-1'>");

            foreach (MenuItem item in _MenuItems)
            {
                if (item == null) continue;
                if (item.SubMenuItems != null && item.SubMenuItems.Count > 0)
                {
                    Html.Append("<li" + item.li_CssClass + ">");
                    Html.Append("<a href=\"" + item.Href + "\">" + item.Text.Trim() + "</a>");
                    ParseSubMenuItems(ref Html, item);
                    Html.Append("</li>");
                }
                else if (item.SubMenuItems != null)
                    Html.Append("<li" + item.li_CssClass + "><a href=\"" + item.Href + "\">" + item.Text.Trim() + "</a></li>");
            }
            Html.Append("</ul>");

            return Html;
        }

        void ParseSubMenuItems(ref StringBuilder Html, MenuItem menuItems)
        {
            if (menuItems == null) return;

            Html.Append("<ul " + menuItems.ul_CssClass + " style=\"display: none; visibility: hidden;\">");

            foreach (var item in menuItems.SubMenuItems)
            {
                if (item == null) continue;

                MenuItem Sub_MenuItem = item as MenuItem;
                WebControl webControl = item as WebControl;

                if (Sub_MenuItem != null)
                {
                    if (Sub_MenuItem.SubMenuItems != null && Sub_MenuItem.SubMenuItems.Count > 0)
                    {
                        Html.Append("<li" + Sub_MenuItem.li_CssClass + ">");
                        Html.Append("<a href=\"" + Sub_MenuItem.Href + "\">" + Sub_MenuItem.Text.Trim() + "</a>");
                        ParseSubMenuItems(ref Html, Sub_MenuItem);
                        Html.Append("</li>");
                    }
                    else if (Sub_MenuItem.SubMenuItems != null)
                        Html.Append("<li" + Sub_MenuItem.li_CssClass + "><a href=\"" + Sub_MenuItem.Href + "\">" + Sub_MenuItem.Text.Trim() + "</a></li>");
                }
                else if (webControl != null)
                {
                    Html.Append("<li>");
                    webControl.EnableViewState = true;
                    this.Controls.Add(webControl);
                    webControl.EnableViewState = true;

                    StringBuilder sb = new StringBuilder();
                    sb.Append("<div>");
                    using (StringWriter sw = new StringWriter(sb))
                    {
                        using (HtmlTextWriter textWriter = new HtmlTextWriter(sw))
                        {
                            webControl.RenderControl(textWriter);
                        }
                    }

                    sb.Append("</div>");

                    Html.Append(sb.ToString());
                    Html.Append("</li>");
                }
            }
            Html.Append("</ul>");
        }

        #endregion
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;

namespace MenuServerControl
{
    [DefaultProperty("SubMenuItems")]
    [ParseChildren(true, "SubMenuItems")]
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public class MenuItem : INamingContainer
    {
        #region Fields

        ArrayList _SubMenuItems;
        string text = "";
        string href = "#";
        string _ul_CssClass = "";
        string _li_CssClass = "";

        #endregion

        #region Properties

        [Description("متن منو آیتم")]
        [DefaultValue("")]
        [NotifyParentProperty(true)]
        public string Text
        {
            get
            {
                return text;
            }

            set
            {
                text = value;
            }
        }

        [DefaultValue("#")]
        [Description("<a /> href attribute")]
        [NotifyParentProperty(true)]
        public string Href
        {
            get
            {
                return href;
            }

            set
            {
                href = value;
            }
        }

        [DefaultValue("")]
        [Description("<ul /> css class")]
        [NotifyParentProperty(true)]
        public string ul_CssClass
        {
            get
            {
                if (string.IsNullOrEmpty(_ul_CssClass)) return "";
                _ul_CssClass = " class=\"" + _ul_CssClass + "\"";
                return _ul_CssClass;
            }
            set { this._ul_CssClass = value.Trim(); }
        }

        [DefaultValue("")]
        [Description("<li /> css class")]
        [NotifyParentProperty(true)]
        public string li_CssClass
        {
            get
            {
                if (string.IsNullOrEmpty(_li_CssClass)) return "";
                _li_CssClass = " class=\"" + _li_CssClass + "\"";
                return _li_CssClass;
            }
            set { this._li_CssClass = value.Trim(); }
        }

        [Category("Behavior")]
        [Description("The MenuItems collection")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
        public ArrayList SubMenuItems
        {
            get
            {
                if (_SubMenuItems == null)
                    _SubMenuItems = new ArrayList();
                return _SubMenuItems;
            }
        }

        #endregion
    }
}
<asp:Button ID="Button1" runat="server" OnClick="Button_Click" style="display: none;"  />
<asp:Button ID="SomeIdHere" runat="server" Text="Button 01" OnClientClick="return MakeRealClick('Button1');" />
<script type="text/javascript">
    function MakeRealClick(sButtonID) {
        var arrInputs = document.getElementsByTagName("input");
        for (var i = 0; i < arrInputs.length; i++) {
            var oCurInput = arrInputs[i];
            if (oCurInput.type == "submit" && (oCurInput.id == sButtonID || EndsWith(oCurInput.id, "_" + sButtonID)))
                oCurInput.click();
        }
        return false;
    }

    function EndsWith(s1, s2) {
        return (s1.length >= s2.length) && (s1.substr(s1.length - s2.length, s2.length) == s2);
    }
</script>