对于服务器端控件(runat="server"的疑问)

会思考的草 2014-06-25 04:21:35
刚开始接触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"什么时候不应该加?有什么准则吗?
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
indusl 2014-06-26
  • 打赏
  • 举报
回复
1:你说的都正确。 2:你说的也正确,至于服务器做了什么?服务器只是生成并输出了一个长字符串而已。 比如 生成了一段javascript代码而已。浏览器自己会解释的,就会弹出你说的alert。 3:如果是webform编程,必须加runat
於黾 2014-06-26
  • 打赏
  • 举报
回复
你按下按钮,只是将按钮事件提交给服务器,让服务器知道你按下了按钮 服务端会执行按钮中的代码,而不是把代码发回IE上执行. 服务端执行完,会重新生成HTML让IE显示,于是你发现IE刷新了
itliyi 2014-06-26
  • 打赏
  • 举报
回复
服务器解析,生成对应的HTML代码,输出
  • 打赏
  • 举报
回复
由服务器解析,生成对应的HTML代码,输出到浏览器端。
moonwrite 2014-06-25
  • 打赏
  • 举报
回复
3,什么时候应该加runat="server"什么时候不应该加?有什么准则吗? 如果是WebForm服务端控件都是必须加runat="server" 如果是Html控件则可以选择~ 准则就是你在后台需要控制html控件的时候 <a id="lnk" href="" runat="server" >aaa</a>假设你要在后台控制文本 aspx.cs lnk.Text="bbb"; 如果只是刚刚学~那么学MVC吧~
黑手党维多 2014-06-25
  • 打赏
  • 举报
回复
加上runat=server表示这是一个服务器控件,也就是说,你点击后需要在服务器上执行一定的逻辑代码,执行完后服务器在返回到前端生成html代码,至于什么时候加,什么时候不加,那要看你的具体实现,如果不需要服务器参与的,就不用加,都加上肯定徒然增加服务器负担,能用html代码或控件实现的就用html控件或者代码,你点击按钮,弹出alert,这是js代码,这是前端的,这个过程不涉及到后端代码,也就是说,单纯弹出一个alert,html控件或者一个div或者一个链接都能实现
EdsionWang 2014-06-25
  • 打赏
  • 举报
回复
加了runat="server" 就能写后台代码了。光需要Alert这些,可以写脚本。Button还有一个onclientclick可以去处理脚本代码。
  • 打赏
  • 举报
回复
runat="server"是指这段代码由服务器解析,生成对应的HTML代码。 点击这个按钮的时候触发一个Javascript提交事件,服务器会识别这个提交并执行对应的C#方法。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧