runat="server"

指定服务器控件.通过此声明,即使是在System.Web.UI.HtmlContrls namespace下面的html control也可以经asp.net机制封装成服务器控件. 如果无此声明,即使在System.Web.UI.WebControls namespace下面的control也不可以做为服务器控件处理,而是解析成一个LiteralControl, 例如:
在一个page上添加一个textbox :
注意,没有声明runat=”server” (Visual Studio.net 2005 会提醒缺了runat属性, 这里我们不理会它)
解译后生成的代码如下:
把整个TextBox的声明作为一个LiteralControl来看待,直接Render到客户端,所以整个page出来的样子就是
查看这个页面的source, 会发现有一行 <asp:TextBox ID="txtboxWithNoRunatServer">TextBox tag with no runat server</asp:TextBox> 而IE过滤掉那些它不能识别的html/xml tag, 然后把它呈现出来,此例中这个不能识别的tag就是<asp:TextBox>
所以WebControl 不一定是Server Control, 而HtmlControl不一定不是Server Control, 判断标准就是有没有ruanat=”server”
注: LiteralControl是整个asp.net中比较特殊的类. 对于那些服务器控件之间的连续静态文本,asp.net都会生成一个LiteralControl, 把它加载进来.

posted on 2007-07-11 11:54  redpeachsix  阅读(781)  评论(0编辑  收藏  举报

导航