先看此篇《MVC程序完成Autocomplete功效
http://www.cnblogs.com/insus/p/3546255.html 它是落成应用jQuery完成文本框输入文字,出现下拉列表,自动完毕与拔取作用。

信任你的支出的MVC应用程序中,不止有唯一一个此AutoComplete成效。倘使有四个时,或是不断新加时,你的Handlers目录下,肯定会面世七个ashx文件来襄助。每增加一个,就会去复制然后修改它。因为这一个ashx内处理的是不一样类各自的数目。

就此让Insus.NET想起来,是不是足以所有AutoComplete只共用一个ashx文件呢?
是还是不是可以解决与已毕,但愿尝试一下。

本篇小说,将采纳到接口(interface),反射(Reflection)等技能与文化。

为了更生动与示范,Insus.NET根据前一篇的例证,再添加了此外一个AutoComplete:
图片 1

打开五个Handlerx.ashx文件,相比与发现:
图片 2

唯有高亮部分差别,那是各自类实例化。
尚未涉及,你明白.NET编程,能够抽象或是接口它们。在此Insus.NET使用的是接口。
在MVC在应用程序的Interfaces目录下,创设一个IAutoCompletable接口:
图片 3

接口完成了,程序将来再的AutoComplete功用完成,在Entity种类中贯彻那么些接口即可,可是现在对已经完结了的Entity,分别打开它来再度已毕即可:
看望PinYinEntity.cs被改成什么样了:
图片 4

另外的AbbreviatorEntity.cs类:
图片 5

八个类都实作了接口,并再次来到了接口函数据类型DataTable。未来有新的此类功能充分时,commentout的办法代码,就不要再写了。
看到此间,大家在上三个类中,每个连串被commentout的语法中,还有一句是被划掉的,它是的意思是把DataTable转换为List<T>的。我可以再回过头去看Handlerx.ashx文件,在#25~#26行代码,它的意味是把List<T>连串化对象。

根据那两处代码,Insus.NET决定此外写一个一头函数整合,是对DataTable体系化的措施:
图片 6

下边Insus.NET在Handlers目录下,写一个AutoComplete.ashx文件,将代替以前Handlerx.ashx文件:
图片 7

西晋具备jQuery想完成AutoComplete的机能,只需求引用此文件即可。此文件有添加多一个参数,Insus.NET是以多少表名来不一样,当然你也得以按你的想法来定义这几个参数。

string tableName = context.Request["tableName"];

此ashx文件还使用了反光(Reflection),即是依据所传颂的参数来反光到有落到实处过接口IAutoCompletable.cs的类。

接下去的劳作,是对那存在的八个视图举行改动,每个视图中,只改一句代码:
图片 8

 另一个视图:
图片 9

 

西魏,再添加其它一个新的AutoComplete功效时,有视图中,再引用此句:

 url: "/Handlers/AutoComplete.ashx?tableName=xxx&prefix=" + request.term,

其间xxx是象征你的参考值。

终极是附上实时操作演示:
图片 10

上面是MVC应用程序训练最新源代码与数据库备份文件。
程序是.NET Framework 4.5, 数据库为SQL Server 2012:
http://download.cnblogs.com/insus/MVC/InsusMVCSiteCS_2014_Feb14.rar 

 

相关文章

网站地图xml地图