刚开始接触ASP.net,对这个服务器端控件不能理解。比如
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>
protected void Button1_Click(object sender, EventArgs e)
{
}
关于以上代码,我有两个疑问:
1,这个button如何能在服务器端运行呢?在我理解中,打开一个网页的过程是这样的:客户端浏览器请求某个URL的页面,服务器端生成HTML代码(HTML中定义了这个button)返回给客户端浏览器渲染,展现给用户,HTML中所包含的Button是客户端浏览器解释HTML代码的时候绘制出来的,用户所有的操作的结果最终都是由客户端浏览器展现给用户的。如果我的看法没错的话,当用户点击它的时候,发生了什么呢?客户端浏览器难道需要再次发送请求给服务器告诉服务器页面上的按钮被点击了,服务器再返回一段代码给浏览器执行?这样的话岂不是如果页面上有大量服务器端控件,就会带来严重的通信负担?
2,假如我以上的理解正确,当用户点击服务器端控件的时候,浏览器需要通知服务器,那么这个时候浏览器需要构建一个完整的HTTP request吗?服务器端收到通知得知button被点击之后,服务器做了什么?服务器返回什么内容让浏览器去执行(假如我想在用户点击按钮的时候弹出一个对话框Alert之类的)?
3,什么时候应该加runat="server"什么时候不应该加?有什么准则吗?