仓酷云

标题: ASP.NET编程:复杂洁净的C# MVC计划案例:BrothersDropdownList()仓酷云 [打印本页]

作者: 萌萌妈妈    时间: 2015-1-18 11:17
标题: ASP.NET编程:复杂洁净的C# MVC计划案例:BrothersDropdownList()仓酷云
什么叫数据库怎么样?什么意思?你想单学数据库。(其实变成是我问的)团队切换器

在/Teams/Details?id=xxx的页面,有如许一个控件,使得不必要回到/Teams/Index就可以轻松切换团队:
ASP.NET编程:复杂洁净的C# MVC计划案例:BrothersDropdownList()仓酷云
登录/注册后可看大图

因为这类团队切换控件屈指可数,好比在团队故事板中(和其他中央多少处):
ASP.NET编程:复杂洁净的C# MVC计划案例:BrothersDropdownList()仓酷云
登录/注册后可看大图

以是但愿开辟一个控件。
这个控件应当能:
1.里边所包括的链接主动跟从页面的链接。
好比第一张图里边,指向/Teams/Details?id=XXX;而第二张图里边,则是指向/Agile/TeamStoryBoards/Details?teamID=xxx
2.下拉菜单里边的一切链接,会由于id或teamID分歧而指向指定团队的页面。
计划思绪
挪用代码:



[html]



挪用代码老是很像天然言语,他说:在这个页面(this)的链接里有个字段("id")有差别,随Team而变更。在挪用代码中,任何比天然言语多的内容基础上都是渣滓内容。

实践上能够看出,Url自己不克不及硬编码写出来,而是应当从页面主动猎取;猎取后,把分歧链接中的id=xxx换成分歧Team的ID。

实践代码:



[csharp]



MFCUI.DropdownListHtml是别的一个发生下拉菜单的控件,未几说了,关头是个中的一句话:




[csharp]



这句话把page.Request.RawUrl中的"id"或"teamID"交换为program.Teams()中分歧团队的ID,天生其新链接。
如许,这个办法就可以在任何页面,使用一个id/teamID等辨别字段名来主动发生团队切换的效果,而链接究竟指向那里不体贴。扩大
之前说的这个工具不错,但是在别的一种场景中不克不及间接用,好比上面这个“切换产物”:
ASP.NET编程:复杂洁净的C# MVC计划案例:BrothersDropdownList()仓酷云
登录/注册后可看大图

挪用代码长得很像:



[html]




拷贝代码改写的了局是给Product增添一个相似函数:


[csharp]



这两个办法的内容几近完整不异,这是代码坏滋味的前兆;好比今后修正了MFCUI.DropdownListHtml,就要返来修正两个中央。

亏得Product和Team都承继自基类Item(用于处置树状布局,如Father,Brothers,SubItems之类的),如许就能够用基类举行改写:
不外,改写的时分最好遵守某些步骤,不然很简单在半路上撂挑子。
步骤1:改写个中一个函数,往失落详细的范例
我先拿Product里边谁人动刀,在本来函数的上面(不要间接给改了),增添一个新的函数:



[csharp]



一切分歧点,都被提取成一个参数:
defaultText用来处置“选择团队”和“选择产物”;father用来处置Program.Default()和ProductLine().Default();

whattype是我们用于在Item基类层面上辨别分歧的范例的,好比产物有产物线(ProductLine)-产物(Product)-版本-公布等层级;而团队有公司-子公司-部门(Program)-团队(Team)等层级。


[csharp]



就是问father的下一级别中的whattype范例的。如许假如传进father=ProductLine.Default()和whattype=ItemWhatType.ProductProduct,就可以失掉一切产物,和本来代码了局不异。


如今,这个办法固然还在Products下,但里边已和Product完整有关了,这是步骤1的方针
在网页上测试一下:



[html]



最好的测试办法,就是像下面如许做“对照测试”,然后看二者有何分歧;这个很像急迅开辟里边提到重构时,要考证产物的内部功效没有产生变更一样。
步骤2:挪到基类中
基类叫Item,函数名稳定仍是BrothersDropdownList,代码不写了。
从头做对照测试:



[html]



ASP.NET编程:复杂洁净的C# MVC计划案例:BrothersDropdownList()仓酷云
登录/注册后可看大图

了局是三个控件功效完整不异,好了,删除前两个;再往Team何处把Team的办法删除,挪用也做响应修正。

今后任何Item派生类都能在桌面上扔如许一个控件来切换了。
在火星人里边一切工具都是Item,以是复用的次数十分多。
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……
作者: 再见西城    时间: 2015-1-20 19:49
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.ckuyun.com),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
作者: admin    时间: 2015-1-29 18:21
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者: 因胸联盟    时间: 2015-2-1 18:42
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
作者: 分手快乐    时间: 2015-2-7 13:26
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
作者: 山那边是海    时间: 2015-2-7 20:00
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
作者: 只想知道    时间: 2015-2-11 01:34
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
作者: 飘飘悠悠    时间: 2015-3-1 19:22
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
作者: 第二个灵魂    时间: 2015-3-7 09:09
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
作者: 仓酷云    时间: 2015-3-14 16:05
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
作者: 小妖女    时间: 2015-3-21 11:50
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2