大家可以谈谈加了runat=server的WEB控件和HTML控件有什么区别吗? 
一个html的input控件加上runat=server后与web服务器端的TextBox有什么区别,传值方式各是什么?

解决方案 »

  1.   

    没什么区别,都变成了服务器端运行了,inupt.value[html runat=server]textbox.text(服务器控件)
      

  2.   

    up,变成HTML服务器控件了,仅此而已
      

  3.   

    说一句吧,用html加runat没有那么大的ViewState,另外控制灵活。
      

  4.   

    没什么区别,都变成了服务器端运行了, inupt.value[html runat=server] textbox.text(服务器控件) 
      

  5.   

    你可以在网站中放入这样一个aspx页面测试一下:<%@ Page Language="C#" %><script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            foreach (Control x in this.Panel1.Controls)
                Print(x);
        }    private int n;    private void Print(Control x)
        {
            this.Result.Text += string.Format("{0}. 一个{1}控件。", ++n, x.GetType().Name);
            if (x is HtmlControl)
                this.Result.Text += string.Format("TagName属性值是{0},Value属性值是{1}。", ((HtmlControl)x).TagName,
                    ((HtmlControl)x).Attributes["value"]);
            else if (x is LiteralControl)
                this.Result.Text += string.Format("Text属性值是{0}。", Server.HtmlEncode(((LiteralControl)x).Text));
            this.Result.Text += "<br />";
        }
    </script><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Panel ID="Panel1" runat="server">
            <input type="text" value="Hello World!" />
            <input type="text" runat="server" value="Hello World!" />
            <asp:TextBox ID="TextBox1" runat="server" Text="Hello World!"></asp:TextBox>
        </asp:Panel>
        <asp:Label ID="Result" runat="server" EnableViewState="false">
        </asp:Label>
        </form>
    </body>
    </html>
    只有亲自动手测试才可以真正看懂软件系统的运行机制,靠读书往往是会得到错误的理解。这个测试输出的结果是:1. 一个LiteralControl控件。Text属性值是 <input type="text" value="Hello World!" /> 。
    2. 一个HtmlInputText控件。TagName属性值是input,Value属性值是Hello World!。
    3. 一个LiteralControl控件。Text属性值是 。
    4. 一个TextBox控件。
    5. 一个LiteralControl控件。Text属性值是 。也就是说:
    1. 被一些人称之为"客户端控件"的第一行<input>的标签被解析为服务器端LiteralControl控件。它也是一个绝对的服务器控件。
    2. 具有Runat="Server"标记的<input>标签被解析为服务器端HtmlInputText控件,它属于我们称之为“HTML控件”的这一组控件中的一种。
    3. 使用<asp:Text>来书写的xhtml标签被解析为服务器端TextBox控件,它属于我们称之为“Web控件”的这一组控件中的一种。
    4. 实际上解析器还将设计时为了格式化而打入的不可见的回车换行字符解析成两个LiteralControl控件实例。从这个测试入手,你可以再遇到是而非的对于“客户端控件、服务器控件”的说法时有些分辨能力。