文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ASP.NET如何实现WEB控件

2023-06-18 00:27

关注

小编给大家分享一下ASP.NET如何实现WEB控件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

ASP.NET的WEB控件分二大类,分别在System.Web.UI.WebControls、System.Web.UI.HtmlControls命名空间下,前者继承自WebControl,后者继承自HtmlControl,这二个类又都继承自System.Web.UI.Control的windows平台,不论你从事什么开发,最终都需要有人调用loadlibrary.dll.

那么ASP.NET的WEB控件,不论你使用什么控件,最终都要调用Render.

其实做为前台开发,这些控件大部分不是那么好用.

首先会生成长长长长的ID,特别是面页镶套有控件的时候,一是会让你最终的HTML代码膨胀,另外和js配合的时候死了麻烦,要和js交互需要写一堆 <%=control.clientid>,没办法,ASP.NET非要'善意'的帮助我们解决ID冲突的问题.这个ID为什么不和最终生成的ID分开呢,可能是当时做这套控件的时候javascript还没有现在这么强大,被ms忽略了.

还有多生成一个span的问题,即不w3c,又不利于排版.写css的时候要考虑夹在中间不尴不尬的span.

form问题,很多表单等控件,要用到server端form,当而面有多个form的时候,只能把其中的一些form用js交互了,form在URL重写的时候还有个问题,生成的不是URL重定向后路径,server端处理这又需要重写form

对于新手还有长长的_VIEWSTATE

很多时候,我们编写前台代码的时候,只是需要简单的呈现出来,不需要长长的ID,不需要span,不需要_VIEWSTATE,仅仅需要几行干净的HTML标签,但是根本没有选项或属性设置,要么全部给你,要么全不给 .虽然我们可以像asp,和ASP.NET那样来编写代码,但是既然提供了总是要用的.

WebControl也带来一定的灵活性,现在ASP.NET web开发,基本都分是N层架构, 如果这些代码都在逻辑层输出,不修改源代码就没办法更改了,连接文字 比如这样的,简单的个改连接文字模板等属性.另外,表格控件用在后台编辑数据等也是相当方便. 但是用在前台,GridView之类的设计成美工切好的图,绝对的体力活.

有些人使用ASP.NET的WEB控件都快有强迫症了,前台简单的显示都要用GridView,明明StringBuilder拼凑又简洁,又高效么.

前几天碰到一个奇怪的问题,想做一个效果, 鼠标移动到图片上,高亮显示边框,美工做好加入到代码中,死活没效果,找半天不知道怎么回事,后来无意中发现所有的Image控件,自动加上了, 好吧,后处台处Image.Attributes.Remove("style");还是有在加上Image.Attributes.Clear();仍然有,决对是个脑残的设计,大概是为了解决夹在a标记中的img标记默认的1px的border的问题吧,可是这就没办法用css来处理Image的border属性了。

我最常用的控件:

literal 干净,方便.拼凑HTML代码,js代码

repeater 干净的列表

placeholder 控制显示逻辑

最脑残的控件:

Image 原因见上面一条

最没价值的控件:

label  span套literal就行了,样式交给美工去解决,看不出有什么实用的价值.

难用的控件:

datalist ,gridview 生成div或列表布局好累(仅仅指前台)

其他控件视场合而定.

另外HtmlControl和WebControl的区别,网上有这样说的,纯属误导,实在看不下去了,解释一下

使用起来也相当方便,举个简单的例子,例如Button的生成:

Html控件是将庞大控件集合全部弄到页面中,用到哪个功能,就设置一下属性,如下:

<input type=submit/button/text runat=server>

这样会占用相当大的控件资源

这个纯属误导,还流传很广. 最终都是生成HTML标签,input之类的跟本不需要将庞大控件集合合部弄到页面中,只是最终生成一个标签而已,要说差异,也只是HtmlControl和WebControl基类之间的差异.

Web控件具有回送功能,能够用ViewState维持控件的状态.

Html控件则不能,当点击页面的操作,其状态就会丢失.

protected virtual void LoadViewState(object savedState);  protected virtual object SaveViewState()

其实这二个定义在System.Web.UI.Control基类中,只是WebControl重写了这二个方法,但HtmlControl里没有对这二个方法进行重写,但这不等于上面的说法

Html控件与Web控件***的区别是它们对事件处理的方法不同。对于Html窗体控件,当引发一个事件时,浏览器会处理它。但对于Web控件,事件仅由浏览器生成,但浏览器不会处理它,客户端要给服务器发个信息,告诉服务器处理事件。

这是混淆了server事件和客户端脚本事件,不论是实现自WebControl还是HtmlControl都可以触发Server端事件 
处理server端事件只要实现了IPostBackEventHandler接口的控件,都可以 。

看完了这篇文章,相信你对“ASP.NET如何实现WEB控件”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯