public partial class _Default : System.Web.UI.Page
{
    protected HtmlInputButton btnShowMessage;
    protected Button btn;
    
    protected override void OnInit(EventArgs e)
    {
            btnShowMessage = new HtmlInputButton();
            btnShowMessage.ID = "btnShowMessage ";
            btnShowMessage.Value = "Show Chinese character";
            Form1.Controls.Add(btnShowMessage);            btn = new Button();
            btn.Text = "My test button";
    }    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(btn.Text);
        Response.Write(btnShowMessage.Value.ToString());
    }
}

解决方案 »

  1.   

    做sharepoint的webpart,就是自定义控件,但是这东西没有aspx界面,所有元素要自己手动在后台创建(包括javascript代码),有些必须要用javascript才能实现。刚学,对这还不是很懂
      

  2.   

    忘了写问题了 = =! 目的:在Page_Load中访问到HTML控件,这段 代码访问不到
      

  3.   

    <form id="form1" method="post">
    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
    </form>
        protected override void OnInit(EventArgs e)
        {
            HtmlInputSubmit btn = new HtmlInputSubmit();
            btn.Value = "点击";
            HtmlInputText txt = new HtmlInputText();
            txt.ID = "txt";
            txt.Name = "txt";
            txt.Value = "inputtext的值";
            Panel1.Controls.Add(txt);
            Panel1.Controls.Add(btn);
            base.OnInit(e);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.Form["txt"] != null)
                    Response.Write(Request.Form["txt"]);
            }
        }
      

  4.   

    你直接输出的 不行 你最好是在一个服务器控件里面来添加 例如一个层
    <div runat="server" id="div1"><div>后台
    div1+="你要输出的控件";
      

  5.   

    html控件完全是可以自己组装字符串来生成的,你直接将下面的字符串加载到你要显示的位置就OK了
     public string getUserCountrol()
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<input  type=\"button\" value=\"点击\" />");
                sb.Append("<input type=\"text\" id=\"txt\" name=\"txt\" value=\"inputtext的值\" />");
                return sb.ToString();
            }
      

  6.   

    如果要加上javascript代码我不得蛋疼死不过还是谢谢拉~
      

  7.   

    Form1是有runat=server这个属性的
      

  8.   

    1.楼主的代码没有问题,可以使用;
    2.如果非要说有什么问题,可能是Form1的问题,改成form1
      或者干脆this.Controls.Add(btnShowMessage);
    3.贴出异常堆栈信息,否则没人知道问题在哪里
      

  9.   

    request确实能访问取到控件的属性。
    但是为什么在load里访问不到对控件的引用呢?
    在Oninit里已经实例化了啊。。
      

  10.   

    检查了一下代码,好像又行了请问一下,生成动态控件在哪里写比较合适(页面生命周期),网上也没有合适的答案,把分给你吧。我同事都是写在page_load里的,我觉得这个习惯很不好
      

  11.   

    动态创建控件,就写在OnInit里面好了,微软就是这么做的
    只不过你的处理应该更有条理,
    比如:在OnInit中调用CreateView()
    在CreateView中调用:
    CreateControl1(),CreateControl2()......这样有个好处,日后重用或升级代码会很方便