请看一下代码红色部分 为什么一开始需要 base.Render(writer);   我把它删了感觉没什么变动?using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace CustomComponents
{
    public enum ButtonDisplay
    {
        Button = 0,
        Hyperlink = 1
    }    [ToolboxData("<{0}:SuperButton3 runat=server></{0}:SuperButton3>")]
    public class SuperButton3 : Control, IPostBackEventHandler
    {
        public virtual ButtonDisplay Display
        {
            get
            {
                object display = ViewState["Display"];
                if (display == null)
                    return ButtonDisplay.Button;
                else
                    return (ButtonDisplay)display;
            }
            set
            {
                ViewState["Display"] = value;
            }
        }        public virtual string Text
        {
            get
            {
                object text = ViewState["Text"];
                if (text == null)
                    return string.Empty;
                else
                    return (string)text;
            }
            set
            {
                ViewState["Text"] = value;
            }
        }        private static readonly object ClickKey = new object();        public event EventHandler Click
        {
            add
            {
                Events.AddHandler(ClickKey, value);
            }
            remove
            {
                Events.RemoveHandler(ClickKey, value);
            }
        }        protected virtual void OnClick(EventArgs e)
        {
            EventHandler clickEventDelegate =
               (EventHandler)Events[ClickKey];
            if (clickEventDelegate != null)
            {
                clickEventDelegate(this, e);
            }
        }        public void RaisePostBackEvent(string argument)
        {
            
            OnClick(EventArgs.Empty);
        }        override protected void Render(HtmlTextWriter writer)
        {
            base.Render(writer);            Page.VerifyRenderingInServerForm(this);            if (Display == ButtonDisplay.Button)
            {
                writer.Write("<INPUT type=\"submit\"");
                writer.Write(" name=\"" + this.UniqueID + "\"");
                writer.Write(" id=\"" + this.UniqueID + "\"");
                writer.Write(" value=\"" + Text + "\"");
                writer.Write(" />");
            }
            else if (Display == ButtonDisplay.Hyperlink)
            {
                writer.Write("<A href=\"");
                writer.Write(Page.GetPostBackClientHyperlink(this, ""));
                writer.Write("\">" + Text + "</A>");
            }
        }
    }
}

解决方案 »

  1.   

    可以删除,也可以保留。如果删除了,你编辑页面就没得用,所有控件都不会出来,但是你后面写的会出来。。如果你保留,你编辑页面的时候,先输出页面的HTML代码,再输出你在后面写的HTML,但是你的HTML不会保存在viewstate里面
      

  2.   

     base.Render(writer);  这个显示基类成的html,和你现在重写的Render方法中的html一起显示
     如果你writer.Write("dddd");只显示dddd