首页 > 代码库 > ASP.NET服务器端控件和HTML控件的比较 (转)

ASP.NET服务器端控件和HTML控件的比较 (转)

区别:服务器端控件都会有个runat="Server"属性,这样才能够在后台对其进行修改,也就是在cs代码里面能对其进行修改。例如,当你放个HTML控件时,在CS代码中引用不出控件名,但加上runat="Server" 后在CS代码中就能引用该控件了。

其实ASP.NET 的服务器控件解析后最终返回到前台还是HTML控件。例如当你建个页面并放一个asp:textbox上去,然后运行页面,查看页面源文件就会发现放上的服务器控件变成了HTML的inupt type="button"。

视图状态是指:由于HTTP连接属于无状态的,每次页面请求都无法记录上次请求页面的信息。那么要保存上次请求页面上控件的值,也就是页面刷新后,填写的值不变,比如在textbox里填了个‘a‘,页面刷新后还是‘a‘,.NET框架为了实现这种机制,就利用viewstate视图状态来保存这些控件的值。

然而这些控件的值都存在什么地方呢?运行程序,然后在页面中查看源文件,我们就可以看到一个input type="hidden" name="__VIEWSTATE"的标签,这就是所谓的”视图“。它是经过服务器序列化过的,当服务器再次接收后会反序列化这些隐藏域的值,接着重新给这些控件赋值,从而页面刷新后还能记录上次请求时候的所有控件的值。

服务器控件都会默认保存VIEWSTATE,它有个属性(EnableViewState)可以设置,设置为Flase就不保存,页面刷新后,值也就没了,可以做个测试放个textbox设置为EnableViewState为false,然后输入个值,然后再用按钮去刷新页面,那么textbox会为空,因为没有视图状态记录到上次你输入的值。