关于asp.net实际应用开发、组件开发

yghua8 2005-06-02 03:01:26
这几天一直在学习asp.net组件开发,主要是从《asp.net服务器控件与组件开发》、《深入剖析asp.net组件设计》两本书入手,但由于时间有限,圄囵吞枣。特别是对黄忠成的《深入剖析asp.net组件设计》,其技术的深度、描述语言的风格、讲解程度、C#程序(我对VB.NET稍熟些),让我感受到了打击...

前面我就遭遇此书中一问题,现未得解决之道,见:
http://community.csdn.net/Expert/topic/4042/4042913.xml?temp=.8564264

也没办法,时间不允许我细细研究,立马介予实际,着手开发一个WEB应用程序。

在欲开发的软件中有很多页面或页面的部分具备其共同性,为了提高页面的复用程度,我可以说是绞尽脑汁。
首先还以为能像windows开发一样能页面继承,结果多方考究查找资料后终告泡汤(想一想,如能方便的页面继承多好呀~~`~,不晓得微软那些大头们为何不往这方面多动脑细胞~`` 听说2.0中已初俱页面继承功能,但看了些文章对其同样不敢过多奢望);
然后想到user control,但其设计的不可见性、不利于动态布局(我的软件中界面虽具备相当的相似性、酷似模板,但亦多为动态布局)、,使我又不得不放弃。
于是否我想到了自定义组件,狂翻了一遍上述两书后,我头大了......

我原是用PB做windows应用开发的,很多脑筋都还停留在windows应用开发阶段未完全转型,包括分析、设计等....

^_^

[思想篇]

为了提高界面的一致性、可复用程度、可扩充性并使WEB软件赶向windows的交互能力,我的做法是:
1、创建、扩充自身组件库,主要包括几个部分:
(一)、两书中、网上能用得着的的组件(其中亦包括吴老大的aspnetpager);
(二)、Infragistics NetAdvantage 2005、ComponentArt、ComponentOne Studio ASP.NET(当然得有所取舍,熟悉其中之一都耗时不少);
(三)、适合此软件的特定组件,又包括:
1)对两项组件的继承:我是把上两项中要用到的组件大多数继承下来,至所以这样做:
一是想统一其模板风格设置一些默认属性,避免用时做重复功,如:继承了Infragistics中的WebButtons控件,使其具备适合此软件的颜色大小样式等风格,并干脆再次继承建立了一组常用的既定功能按钮,包括查询、新增、删除等,用到时直接拖入即可;
二是想建立这样一个中间层组件,如果到时需求发生变化,就不需改根源(别人的组件代码)也无需去一个个的改应用组件之处了。
2)另外一种考虑是强强联合,建立组合组件。如Infragistics NetAdvantage中的UltraWebGrid+AspNetPager,初步页面中创建在一起测试,效果还不错哟
3)自身需扩建控件。说实话,自己对创建自定义控件不敢恭维,到时耗时耗力可能会得不偿失只能先依是否必需而尽可能不为了。如“图片文字链接按钮”,左边一个小图片右边为链接文字的一个链接按钮。

[实现篇]

尽管就这样一些不成熟的想法(请多指出不成熟之处,我好立马纠正),实现起来我都觉有力不从心,唉~~`谁叫我接触“倒来得”不久呢~~~
OK,我就再实例化一下我的想法,亦描述一下已经遭遇到的问题。
我的软件中有一种很通用的页面模板组成如下:
___________________________________________
| TAB页区 |
___________________________________________
| 查询条件录入区 |
| 内容标题及“图片文字链接按钮”区 |
| 查询结果显示区(即WebGrid) |

此页中,我打算创建组件:WebTab、通用功能按钮(如查询)、图片文字链接按钮、通用功能图片文字链接按钮(如新增、删除、退出等)、固定风格WebGrid等。
然后创建除TAB页以外部分的UserControl即ASCX文件,ASCX中的组成部分多为上述组件。
单击不同的TAB即加载不同的ASCX。

实现过程中,我熟悉了一下[思想篇]中(一)(二)项的既定组件,尝试着实现(三),但我碰到了一些小问题:
1、由于此TAB实际上只相当于一个个的链接按钮,如果使用Infragistics NetAdvantage中的UltraWebTab似乎有点大财小用?也势必增加页面大小,但如果每个页面都用表格+背景图+文字实现TAB效果,并加上代码控制TAB切换的话,那样每次都复制代码是否用太麻烦并已不具备复用性了。还是自己开发一个简易TAB组件?该如何决择?
2、可能是使用了子控件、模版化控件技术的缘故。我在Infragistics NetAdvantage中一些组件极为复杂的组件时,如UltraWebGrid。我首先在自己的组件项目中引用了这些控件所在位置的相应DLL文件并把这些DLL的“复制到本地”属性设为True,然后继承它们并创建新的组件ABWebContrl。在页面使用新继承创建的组件时,HTML如下:

<ap:ABWebGrid id="OAWebGrid1" style="Z-INDEX: 102; LEFT: 104px; POSITION: absolute; TOP: 144px" runat="server" Width="384px">
<DisplayLayout RowHeightDefault="20px" Version="4.00" borderCollapseDefault="Separate" Name="OAWebGrid1">
<AddNewBox>
<Style BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray">
<BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White"></BorderDetails>
</Style>
</AddNewBox>
<Pager>
<Style BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray">
<BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White"></BorderDetails>
</Style>
</Pager>
<HeaderStyleDefault BorderStyle="Solid" BackColor="LightGray">
<BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White"></BorderDetails>
</HeaderStyleDefault>
<FrameStyle Width="384px" BorderWidth="1px" Font-Size="8pt" Font-Names="Verdana" BorderStyle="Solid" Height="200px"></FrameStyle>
<FooterStyleDefault BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray">
<BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White"></BorderDetails>
</FooterStyleDefault>
<EditCellStyleDefault BorderWidth="0px" BorderStyle="None"></EditCellStyleDefault>
<RowStyleDefault BorderWidth="1px" BorderColor="Gray" BorderStyle="Solid">
<Padding Left="3px"></Padding>
<BorderDetails WidthLeft="0px" WidthTop="0px"></BorderDetails>
</RowStyleDefault>
</DisplayLayout>
<Bands>

<Infragistics.WebUI.UltraWebGrid.UltraGridBand></Infragistics.WebUI.UltraWebGrid.UltraGridBand>
</Bands>
</ap:ABWebGrid>

此组件在设计界面中显示正常,就是QuickDesign属性设置presets没有了模版。但运行浏览时出现“分析器错误”,错误内容如下:
-------------------------------------------------------------
说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误信息: Infragistics.WebUI.UltraWebGrid.BandsCollection 必须具有类型为
“Infragistics.WebUI.UltraWebGrid.UltraGridBand”的项。
“Infragistics.WebUI.UltraWebGrid.UltraGridBand”的类型为
“System.Web.UI.HtmlControls.HtmlGenericControl”。
源错误:

行 49: </DisplayLayout>
行 50: <Bands>
行 51:

<Infragistics.WebUI.UltraWebGrid.UltraGridBand></Infragistics.WebUI.UltraWebGrid.UltraGridBand>
行 52: </Bands>
行 53: </ap:ABWebGrid></FONT>
-------------------------------------------------------------
请问各位大哥,这是为何?该如何解决呢?

想到哪就写到哪,亦未细整理。
已凌晨三点,儿童节早已过,外面居然响起了洒水车的歌声,就先写这些。

实在是对Asp.net了解不深,对asp.net技术把握不住,所以还是请各位大哥左看右看上看下看仔仔细细的把我评头论足一翻,看我的做法、想法、各个点各个疑虑各个问题、可能出现的问题、学习的方向、前进的道路等等等等多多多多指点迷津,不甚感激。
...全文
372 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2005-06-03
  • 打赏
  • 举报
回复
没有用过Infragistics NetAdvantage,也不知道你是如何从这个控件继承的,不过我做过从DataGrid继承的自定义控件,从没碰到过你说的问题。
yghua8 2005-06-02
  • 打赏
  • 举报
回复
等待...
Study_Now 2005-06-02
  • 打赏
  • 举报
回复
up
lqlling 2005-06-02
  • 打赏
  • 举报
回复
太长,确实需要一定时间慢慢看.
reddeephehe 2005-06-02
  • 打赏
  • 举报
回复
mark
Pipiloo 2005-06-02
  • 打赏
  • 举报
回复
实在太长了,先mark一下
renyu732 2005-06-02
  • 打赏
  • 举报
回复
先顶,完了回来再看...
liuchengit 2005-06-02
  • 打赏
  • 举报
回复
各位: 我想知道web.config的资料,有朋友建议一下吗?我的邮箱: liuchengit@sina.com
yghua8 2005-06-02
  • 打赏
  • 举报
回复
to hackate(兰花开香入梦境,独思佳人亦飘然!!) :
还请帮解决一下我的问题,^_^

各位亦可自己继承一个已有的具备子控件和模板控件的自定义服务器控件试试看,是否也会出现此一问题?
yghua8 2005-06-02
  • 打赏
  • 举报
回复
起晚了,发现有这么些朋友在关注,先谢啦。

to itflying(it学习者)、jonescheng(等待升星)
确实长了点...具体的两个问题也就是[实现篇]中的两个问题
其中第2个问题说白了就是:
我继承了已有自定义控件Infragistics NetAdvantage的UltraWebGrid创建新的自定义控件ABWebGrid,运行时确出现了“分析器错误”,不知何故?也不知该如何解决。

to lovelxj(爱生活爱芳芳) :
从已有自定义控件继承创建服务器控件,我是从项目的角度出发的,原因文中有述。
同时对贵言不很赞成,其一、“做服务器控件 应该是自己从最原始的基础上扩展”相信不符合现今开发潮流吧?毕竟我所做的这些服务器控件并不是要做为控件商品。其二、如果从别人已经完成的控件上进行修改整和 那只能说是用户控件。这不是用户控件和服务器控件的区别吧?而且我不喜欢Asp.Net中的User Controls,虽比Include文件好点但仍感觉太局限。

to stickking() :
乐意交流,
我的邮件是:yghua8@163.com,QQ:17552774,MSN:yghua8@msn.com
一般隐身在线

谢大家再多点耐心,继续关注,不甚感激
luckyprg 2005-06-02
  • 打赏
  • 举报
回复
楼主是对自定义控件还不熟。
ghchen 2005-06-02
  • 打赏
  • 举报
回复
互相交流
ghchen 2005-06-02
  • 打赏
  • 举报
回复
呵呵,接分
koala_swnu 2005-06-02
  • 打赏
  • 举报
回复
The article is too long !
Keep it up !
stickking 2005-06-02
  • 打赏
  • 举报
回复
黄忠诚的我最近也在看
的确有深度
是个挑战
相互交流一下
zgw1982@gmail.com
hackate 2005-06-02
  • 打赏
  • 举报
回复
晕,真多。。

好像是用户控件。。吧
lovelxj 2005-06-02
  • 打赏
  • 举报
回复
做服务器控件 应该是自己从最原始的基础上扩展
如果从别人已经完成的控件上进行修改整和 那只能说是用户控件
jonescheng 2005-06-02
  • 打赏
  • 举报
回复
太长了,看不下去了。。
itflying 2005-06-02
  • 打赏
  • 举报
回复
实在太长,请说明具体问题,,帮顶!!!
yghua8 2005-06-02
  • 打赏
  • 举报
回复
自己再顶一下,争取得到大众评叛!

问题亦重新简述如下:
------------------------------------------------------------
我继承了已有自定义控件Infragistics NetAdvantage的UltraWebGrid创建新的自定义控件ABWebGrid,
在页面使用了这个新的自定义控件后,
运行时确出现了“分析器错误”,不知何故?也不知该如何解决。
各位可以照此测试一下,看是否会出错?
亦可自己继承一个已有的具备子控件和模板控件的自定义服务器控件试试看,是否也会出现此一问题?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧