简单介绍Asp.net几个布旗下的区别
欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入
Asp.net之所以现在开发方便和快捷,关键是它有一组强大的布旗下库,包括web服务器布旗下,web用户布旗下,web自定义布旗下,html服务器布旗下和html布旗下等。这里我主要说说html布旗下、html服务器布旗下和web服务器布旗下的区别。
1、html布旗下:就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过javascript和vbscript等程序语言来控制。
以下是引用片段:
<input type=“button” id=“btn” value=“button”/>
2、html服务器布旗下:其实就是html布旗下的基础上加上runat=“server”所构成的布旗下。它们的注意区别是运行方式不同,html布旗下运行在客户端,而html服务器布旗下是运行在服务器端的。参考其他资料是这样说的: 当ASP.NET 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果Html标注有设定runat=“server” 属性,Page 对象会将该布旗下放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器布旗下的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释
以下是引用片段:
<input id=“Button” type=“button” value=“button” runat=“server” />
3、web服务器布旗下:也称asp.net服务器布旗下,是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html布旗下,而不是直接描述html元素。如:
以下是引用片段:
<asp:Button ID=“Button2” runat=“server” Text=“Button”/>
那么它和html服务器布旗下有什么区别呢?参照其他网页的资料看法如下:
1、 Asp.net服务器布旗下提供更加统一的编程接口,如每个Asp.net服务器布旗下都有Text属性。
2、 隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。
3、 Asp.net服务器布旗下可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。
4、 事件处理模型不同,Html标注和Html服务器布旗下的事件处理都是在客户端的页面上,而Asp.net服务器布旗下则是在服务器上,举例来说:
以下是引用片段:
<input id=“Button4” type=“button” value=“button” runat=“server”/>
是Html服务器布旗下,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。
以下是引用片段:
<input id=“Button4” type=“button” value=“button” runat=“server” onserverclick=“test” />
我们为Html服务器布旗下添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。
以下是引用片段:
<asp:Button ID=“Button2” runat=“server” Text=“Button” />
是Asp.net服务器布旗下,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。
由此可见:Html标注和Html服务器布旗下的事件是由页面来触发的,而Asp.net服务器布旗下则是由页面把Form发回到服务器端,由服务器来处理。
4、下面我就结合我自己的测试来说明问题:
这段代码是我放在repeat中的模板里的:其中DeleteCheck是一个js脚本函数,注意是用于是否发送到服务器端的,这里就不展示脚本代码了。
以下是引用片段:
<input runat=“server” type=“button” id=“delete” value=“Server button” />
<input type=“button” onclick=“return DeleteCheck(this)” id=“Button1” value=“Client button” />
<input runat=“server” type=“submit” onclick=“return DeleteCheck(this)” id=“Button2” value=“Server submit” />
<input type=“submit” onclick=“return DeleteCheck(this)” id=“Button3” value=“Client submit” />
<button runat=“server” id=“button4” onclick=“return DeleteCheck(this)” value=“Button-Button”>Button-Button</button>
<asp:Button runat=“server” ID=“button5” OnClientClick=“return DeleteCheck(this)” Text=“Asp:button” />
展现出来的html代码如下: <input name=“Data$ctl03$delete” type=“button” id=“Data_ctl03_delete” value=“Server button” />
<input type=“button” onclick=“return DeleteCheck(this)” id=“Button1” value=“Client button” />
<input name=“Data$ctl03$Button2” type=“submit” id=“Data_ctl03_Button2” onclick=“return DeleteCheck(this)” value=“Server submit” / >
<input ut type=“submit” onclick=“return DeleteCheck(this)” id=“Button3” value=“Client submit” />
<button id=“Data_ctl03_button4” onclick=“return DeleteCheck(this)” value=“Button-Button”>Button-Button</button>
<input type=“submit” name=“Data$ctl03$button5” value=“Asp:button” onclick=“return DeleteCheck(this);” id=“Data_ctl03_button5” />
可以看出以下几点:
1、当布旗下属性中有runat=“server”时,生成的html布旗下时name和id发生的变化(。net Framework)。
2、当asp:button服务器按钮通过生成的页面后转化成类型为submit类型的Client布旗下。
3、当布旗下是html布旗下时通过生成的页面和原来的html代码完全一样(理由上面已经说名)。
[1][2]下一页
【责编:ivy】