解析asp.net下web控件点评_.Net教程
推荐:解读ASP.NET中使用AJAX中的方式asp.net中使用php常用的jquery等类库来实现ajax不是很容易。因为asp.net的机制已经被封装了,依靠内部的viewstate,如果硬用js修改了控件的值,跟他的viewstate对不上,而这些控件又是不可修改的,将对程序造成安全性困扰,后台获取值也是一个麻烦。 另外,a
asp.net下控件分二大类,分别在
System.Web.UI.WebControls
System.Web.UI.HtmlControls
命名空间下,前者继承自WebControl,后者继承自HtmlControl,这二个类又都继承自System.Web.UI.Control
额, windows平台,不论你从事什么开发,最终都需要有人调用loadlibrary.dll.
那么asp.net控件,不论你使用什么控件,最终都要调用Render.
其实做为前台开发,这些控件大部分不是那么好用.
1.首先会生成长长长长的ID,特别是面页镶套有控件的时候,一是会让你最终的HTML代码
膨胀,另外和js配合的时候死了麻烦,要和js交互需要写一堆 <%=Control.ClientID %>,没办法,asp.net非要'善意'的帮助我们解决ID冲突
的问题.这个ID为什么不和最终生成的ID分开呢,可能是当时做这套控件的时候javascript还没有现在这么强大,被ms忽略了.
2.还有多生成一个span的问题,即不w3c,又不利于排版.写css的时候要考虑夹在中间不尴不尬的span.
3.form问题,很多表单等控件,要用到server端form,当而面有多个form的时候,只能把其中的一些form用js交互了,form在URL重写的时候
还有个问题,生成的不是URL重定向后路径,server端处理这又需要重写form
4.对于新手还有长长的_VIEWSTATE
很多时候,我们编写前台代码的时候,只是需要简单的呈现出来,不需要长长的ID,不需要span,不需要_VIEWSTATE,仅仅需要几行干净的
HTML标签,但是根本没有选项或属性设置,要么全部给你,要么全不给 .虽然我们可以像asp,和asp.net那样来编写代码,但是既然提供了
总是要用的.
WebControl也带来一定的灵活性,现在asp.net web开发,基本都分是N层架构, 如果这些代码都在逻辑层输出,
不修改源代码就没办法更改了,<asp:HyperLink runat="server" ID="link">连接文字</asp:HyperLink> 比如这样的,简单的个改连接文字
模板等属性.另外,表格控件用在后台编辑数据等也是相当方便. 但是用在前台,GridView之类的设计成美工切好的图,绝对的体力活.
有些人使用控件都快有强迫症了,前台简单的显示都要用GridView,明明StringBuilder拼凑又简洁,又高效么.
前几天碰到一个奇怪的问题,想做一个效果, 鼠标移动到图片上,高亮显示边框,美工做好加入到代码中,死活没效果,找半天不知道怎么回
事,后来无意中发现所有的Image控件,自动加上了style="border-width:0px;", 好吧,后处台处 Image.Attributes.Remove("style");
还是有style="border-width:0px;"在加上Image.Attributes.Clear();仍然有style="border-width:0px;",决对是个脑残的设计,大概是为了
解决夹在a标记中的img标记默认的1px的border的问题吧,可是这就没办法用css来处理Image的border属性了.
我最常用的控件:
literal 干净,方便.拼凑HTML代码,js代码
repeater 干净的列表
placeholder 控制显示逻辑
最脑残的控件:
Image 原因见上面一条
最没价值的控件:
label span套literal就行了,样式交给美工去解决,看不出有什么实用的价值.
难用的控件:
datalist ,gridview 生成div或列表布局好累(仅仅指前台)
其他控件视场合而定.
另外HtmlControl和WebControl的区别,网上有这样说的,纯属误导,实在看不下去了,解释一下
--------------------------------
1. 使用起来也相当方便,举个简单的例子,例如Button的生成:
Html控件是将庞大控件集合全部弄到页面中,用到哪个功能,就设置一下属性,如下:
<input type=submit/button/text runat=server>
这样会占用相当大的控件资源
--------------------------------
这个纯属误导,还流传很广. 最终都是生成HTML标签,input之类的跟本不需要将庞大控件集合合部弄到页面中,只是最终生成一个标签而已,要说差异,也只是HtmlControl和WebControl基类之间的差异.
--------------------------------
2.Web控件具有回送功能,能够用ViewState维持控件的状态.
Html控件则不能,当点击页面的操作,其状态就会丢失.
--------------------------------
protected virtual void LoadViewState(object savedState);
protected virtual object SaveViewState()
其实这二个定义在System.Web.UI.Control基类中,只是WebControl重写了这二个方法,但HtmlControl里没有对这二个方法进行重写,但这不等于上面的说法
--------------------------------
3. Html控件与Web控件最大的区别是它们对事件处理的方法不同。对于Html窗体控件,
当引发一个事件时,浏览器会处理它。但对于Web控件,事件仅由浏览器生成,但浏览
器不会处理它,客户端要给服务器发个信息,告诉服务器处理事件。
--------------------------------
这是混淆了server事件和客户端脚本事件,不论是实现自WebControl还是HtmlControl都可以触发Server端事件
处理server端事件只要实现了IPostBackEventHandler接口的控件,都可以 .
分享:ASP.NET中的javascript操作下面总结一些常见的ASP.NET中的javascript操作: 1.为button控件添加确认功能 要想为服务器控件添加客户端的事件,需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性,它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP发送Email实例(可带附件)
- js实现广告漂浮效果的小例子
- asp.net Repeater 数据绑定的具体实现
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- VS2010 水晶报表的使用方法
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net页面传值测试实例代码
- DataGridView - DataGridViewCheckBoxCell的使用介绍
- asp.net中javascript的引用(直接引入和间接引入)
- 三层+存储过程实现分页示例代码
- 相关链接:
- 教程说明:
.Net教程-解析asp.net下web控件点评。