解析:
用户控件
用户控件 (user control)
在 ASP.NET 中:使用与 ASP.NET 页相同的语法,以声明方式创作的服务器控件。该控件用 .ascx 扩展名保存为文本文件。用户控件允许对页功能进行分区和重用。第一次请求时,页框架立即将用户控件分析为从 System.Web.UI.UserControl 派生的类,并将该类编译到一个程序集中;页框架在后面的请求中将重用该程序集。因为用户控件不需要预编译就可以进行页面样式创作和部署,所以开发起来很容易。
在 Windows 窗体中:在应用程序内部或应用程序之间提供一致性行为和用户界面的复合控件。用户控件可以是某个应用程序的本地控件,也可以添加到库中并编译成 DLL 供多个应用程序使用。
服务器控件
一种服务器端组件,它封装了用户界面及其相关的功能。ASP.NET 服务器控件直接或间接地从 System.Web.UI.Control 类派生。ASP.NET 服务器控件的超集包括 Web 服务器控件、HTML 服务器控件和 ASP.NET 移动控件。ASP.NET 服务器控件的页语法在控件的标记上包含 runat="server" 属性。
区别:服务器端控件都会有个runat="Server"属性,这样才能够在后台对其进行设置修改,
也就是在cs代码里面能对其修改设置。
你做下测试 你放个HTML控件 在CS代码是引用不出控件名的
然后你个HTML控件加上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会为空,因为没有视图状态记录到上次你输入的值。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)