服务器端控件和客户端控件的比较?
3个回答
展开全部
区别:服务器端控件都会有个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会为空,因为没有视图状态记录到上次你输入的值。
这样才能够在后台对其进行设置修改,
也就是在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会为空,因为没有视图状态记录到上次你输入的值。
展开全部
服务器端控件:
服务器端控件就是组件啦,因为在实际的网站开发中某些功能使用单纯的网页动态开发语言无法实现,就需要用到这样东西,先用其它编程语言按照组件的标准开发相应的功能,只要我们在服务器端安装这个组件,我们就可以按照标准com调用方式,使用网页开发语言来调用。
举个例子:
现在有个数据库,我们在写入的时候需要加密,读出的时候需要解密,如果仅使用asp或php进行加密解密,那么我们只要有asp或php的代码,就可以很轻松地知道解密的算法,那么加密也就失去了意义。所以我们需要一个封装的dll来解决这样的问题。
大致就这样吧。
另外,服务器端控件必须要有runat=server这句话。
客户端控件
由客户端浏览器解释执行。
区别:
客户端控件由客户端浏览器解释执行
服务器控件需要回发执行,当首次打开页面时,需初始化
服务器端控件和客户端控件在性能上是用差别的。服务器端控件比较灵活,客户端控件性能好,我们怎么选择,一般都是根据实际需求来,服务器端控件在性能上是没有客户端控件性能好,但是一个项目可以注意性能的方面很多,如果刻意的话,不太好,可能一个textbox区别不是很多,但是一个gridview就很麻烦了,会花去很多时间。孟老师也的说法也有一定的道理,凡是不能走极端,充分利用各自的特点,平衡各方面的因素。
总结:
尽量使用客户端控件,服务端控件会引起回发,而降低效率。
在能实现相同的功能,首选客户端控件。
不过有时候,必须要服务端控件才能实现功能,如后台要处理业务逻辑。
服务器控件实际上就是客户端控件在客户端的映射而已。
服务器端控件就是组件啦,因为在实际的网站开发中某些功能使用单纯的网页动态开发语言无法实现,就需要用到这样东西,先用其它编程语言按照组件的标准开发相应的功能,只要我们在服务器端安装这个组件,我们就可以按照标准com调用方式,使用网页开发语言来调用。
举个例子:
现在有个数据库,我们在写入的时候需要加密,读出的时候需要解密,如果仅使用asp或php进行加密解密,那么我们只要有asp或php的代码,就可以很轻松地知道解密的算法,那么加密也就失去了意义。所以我们需要一个封装的dll来解决这样的问题。
大致就这样吧。
另外,服务器端控件必须要有runat=server这句话。
客户端控件
由客户端浏览器解释执行。
区别:
客户端控件由客户端浏览器解释执行
服务器控件需要回发执行,当首次打开页面时,需初始化
服务器端控件和客户端控件在性能上是用差别的。服务器端控件比较灵活,客户端控件性能好,我们怎么选择,一般都是根据实际需求来,服务器端控件在性能上是没有客户端控件性能好,但是一个项目可以注意性能的方面很多,如果刻意的话,不太好,可能一个textbox区别不是很多,但是一个gridview就很麻烦了,会花去很多时间。孟老师也的说法也有一定的道理,凡是不能走极端,充分利用各自的特点,平衡各方面的因素。
总结:
尽量使用客户端控件,服务端控件会引起回发,而降低效率。
在能实现相同的功能,首选客户端控件。
不过有时候,必须要服务端控件才能实现功能,如后台要处理业务逻辑。
服务器控件实际上就是客户端控件在客户端的映射而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
服务器控件会编译生成viewstate
如:<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE0NjQ4MDk0MzAPZBYCAgEPZBYMAgIPZBYCAgIPFgYeB29uY2xpY2sFLGZudWNEZWxpdmVyeUJveTYzNDQ1NTQxMjk3MTE1Mzc1MC5zaG93RGl2KCk7Hglpbm5lcmh0bWwFBumAieaLqR4IZGlzYWJsZWRkZAIDDxBkDxYFAgECAgIDAgQCBRYFEAUJ5bey5rS+6YGjBQEwZxAFDOmDqOWIhuWujOaIkAUBMWcQBQnlt7LlrozmiJAFATJnEAUM6YOo5YiG56Gu6K6kBQEzZxAFCeW3suehruiupAUBNGdkZAIKD2QWAmYPFgYfAAUkV2RhdGVQaWNrZXIoe2RhdGVGbXQ6J3l5eXktTU0tZGQnfSk7HghyZWFkb25seQUIcmVhZG9ubHkeCG9uY2hhbmdlBTdmbnVjQmVnaW5EaXNwYXRjaERhdGU2MzQ0NTU0MTI5NzExNTM3NTAuc2V0VmFsdWUodGhpcyk7ZAILD2QWAmYPFgYfAAUkV2RhdGVQaWNrZXIoe2RhdGVGbXQ6J3l5eXktTU0tZGQnfSk7HwMFCHJlYWRvbmx5HwQFNWZudWNFbmREaXNwYXRjaERhdGU2MzQ0NTU0MTI5NzExNTM3NTAuc2V0VmFsdWUodGhpcyk7ZAIMD2QWAmYPFgYfAAUkV2RhdGVQaWNrZXIoe2RhdGVGbXQ6J3l5eXktTU0tZGQnfSk7HwMFCHJlYWRvbmx5HwQFN2ZudWNCZWdpbkZpbmlzaGVkRGF0ZTYzNDQ1NTQxMjk3MTE1Mzc1MC5zZXRWYWx1ZSh0aGlzKTtkAg0PZBYCZg8WBh8ABSRXZGF0ZVBpY2tlcih7ZGF0ZUZtdDoneXl5eS1NTS1kZCd9KTsfAwUIcmVhZG9ubHkfBAU1Zm51Y0VuZEZpbmlzaGVkRGF0ZTYzNDQ1NTQxMjk3MTE1Mzc1MC5zZXRWYWx1ZSh0aGlzKTtkZJA1YkRAou9Bhc3og+DBKvOvrYxx" />
对页面服务器控件进行了相关的操作后这个viewstate会更大
页面服务器控件过多影响效率
html 没有这些 HTML控件更加符合W3C标准
如:<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE0NjQ4MDk0MzAPZBYCAgEPZBYMAgIPZBYCAgIPFgYeB29uY2xpY2sFLGZudWNEZWxpdmVyeUJveTYzNDQ1NTQxMjk3MTE1Mzc1MC5zaG93RGl2KCk7Hglpbm5lcmh0bWwFBumAieaLqR4IZGlzYWJsZWRkZAIDDxBkDxYFAgECAgIDAgQCBRYFEAUJ5bey5rS+6YGjBQEwZxAFDOmDqOWIhuWujOaIkAUBMWcQBQnlt7LlrozmiJAFATJnEAUM6YOo5YiG56Gu6K6kBQEzZxAFCeW3suehruiupAUBNGdkZAIKD2QWAmYPFgYfAAUkV2RhdGVQaWNrZXIoe2RhdGVGbXQ6J3l5eXktTU0tZGQnfSk7HghyZWFkb25seQUIcmVhZG9ubHkeCG9uY2hhbmdlBTdmbnVjQmVnaW5EaXNwYXRjaERhdGU2MzQ0NTU0MTI5NzExNTM3NTAuc2V0VmFsdWUodGhpcyk7ZAILD2QWAmYPFgYfAAUkV2RhdGVQaWNrZXIoe2RhdGVGbXQ6J3l5eXktTU0tZGQnfSk7HwMFCHJlYWRvbmx5HwQFNWZudWNFbmREaXNwYXRjaERhdGU2MzQ0NTU0MTI5NzExNTM3NTAuc2V0VmFsdWUodGhpcyk7ZAIMD2QWAmYPFgYfAAUkV2RhdGVQaWNrZXIoe2RhdGVGbXQ6J3l5eXktTU0tZGQnfSk7HwMFCHJlYWRvbmx5HwQFN2ZudWNCZWdpbkZpbmlzaGVkRGF0ZTYzNDQ1NTQxMjk3MTE1Mzc1MC5zZXRWYWx1ZSh0aGlzKTtkAg0PZBYCZg8WBh8ABSRXZGF0ZVBpY2tlcih7ZGF0ZUZtdDoneXl5eS1NTS1kZCd9KTsfAwUIcmVhZG9ubHkfBAU1Zm51Y0VuZEZpbmlzaGVkRGF0ZTYzNDQ1NTQxMjk3MTE1Mzc1MC5zZXRWYWx1ZSh0aGlzKTtkZJA1YkRAou9Bhc3og+DBKvOvrYxx" />
对页面服务器控件进行了相关的操作后这个viewstate会更大
页面服务器控件过多影响效率
html 没有这些 HTML控件更加符合W3C标准
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |