使用强类型的ViewData好处有许多,比如说在IDE中就会有更好的支持,比如代码提示。同时在View与Controller之间有更严谨的“约定”。在Suteki.Shop项目中作者对强类型的ViewPage引入是通过MvcContrib实现的,下面就是其ViewPage<T>代码(Suteki.Shop\Views\ViewPage.cs):              
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-05-25 09:16:48
                            
                                950阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                在上文中,介绍了如何安装和使用Suteki,今天我们通过源码来看一下Suteki是如何使用Controller。在Suteki中,其使用Abstract的方式来定义一个ControllerBase,以此作为所有Controller的基类,下面是其Controller的类设计图:            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-05-12 12:48:26
                            
                                966阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                 在Suteki.Shop中对于Filter的使用上提供了两种方式,一种是从FilterAttribute(抽象类属性)以及接口 IActionFilter和 IResultFilter中继承并实现。另一种是我们经常提到的从ActionFilterAttribute 上继承方式来实现自己的ActionFilter。首先看一下第一种,同时它也是该项目中被Action广泛使用的方式, 下面是类图:            
                
                    
                        
                                                            
                                                                        
                                                                推荐
                                                                                        原创
                                                                                    
                            2009-05-14 08:13:47
                            
                                1790阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
                 在Suteki.Shop中,作者构造了一个ModelBinder基类“DataBinder”,其本身继承自IModelBinder接口,并以此其类派生出其它一些子类类如ProductBinder等等。可以说除了极个别的地方之外,DataBinder被用于了Suteki.Shop大多数的ModelBinder绑定场景之路。            
                
                    
                        
                                                            
                                                                        
                                                                推荐
                                                                                        原创
                                                                                    
                            2009-05-20 08:52:35
                            
                                1857阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                在Suteki.Shop中内置了提供了基于NHibernate方式的ORM功能,只不过就目前的项目进度还未全部完成其设计时的构想,另外在单元测试上也没有完整的测试。不过其设计思路还是很有意思的。就其将NHibernate引入到项目中的实现方式而言,与Rhino.Commons中所提倡的方式如出一辙,那就是基于IRepository模式。关于IRepository这个接口的定义在之前的这篇文章中已提到并做了相应说明,所以这里就不多做解释了            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-06-08 08:40:01
                            
                                1082阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                在Suteki.Shop中,未使用微软自已的Unity框架来实现IOC,而是使用了大名鼎鼎Castle Windsor。因为引用了Windsor,就有必要简要介绍一下。而我的理解,这个IOC容器(Container)包括下面几个重要概念:            
                
                    
                        
                                                            
                                                                        
                                                                推荐
                                                                                        原创
                                                                                    
                            2009-05-26 09:03:54
                            
                                2137阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                  声明:作为这个系列的开篇,本系统会将我在研究这个项目源码中的一些思考和心得介绍给大家。当然本系统决不是那种所谓的“最佳示范”,里面所提到的使用技巧或设计思路只是给大家在实际工作中提供一个参考,所谓“最好”之类的词汇都是“矬子里拔将军”,相信大家在成功的分析了几个MVC示例之后,会找到适合自己所在团队或公司使用的方式或思路的。 其实在找一个合适的MVC示例上我已花费了“一些”时间,而这个例子对于我来说,还是相对不错的(除了文档和相关说明较少之外)。另外,该项目还使用了其他一些框架或DLL文件,比如castle, MvcContrib, NVelocity。这些内容会在后续文章中讲到。            
                
                    
                        
                                                            
                                                                        
                                                                推荐
                                                                                        原创
                                                                                    
                            2009-05-11 09:05:48
                            
                                1941阅读
                            
                                                                                    
                                3评论
                            
                                                 
                 
                
                             
         
            
            
            
                到今天,这个系列的文章就要先告一段落了。其中我用了10篇文章也没有穷尽该项目的设计思想,只能从中捡了一些我感兴趣的东西进行了分析和说明,正所谓兴趣是最大的动力。当然限于本人水平有限,难免有一些认识上的错误,也希望大家在回复中与我进行交流。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-06-09 08:39:39
                            
                                923阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                在Suteki.Shop,实现了自己的数据校验机制,可以说其设计思路还是很有借鉴价值的。而使用这种机制也很容易在Model中对相应的实体对象(属性)添加校验操作方法。下面就来介绍一下其实现方式。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-05-18 09:20:56
                            
                                777阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                在Suteki.Shop中Model的原型是基于Linq to SQL创建的,其dbml文件位于Suteki.Shop\Shop.dbml。而Suteki.Shop在此文件的基本上,以"partial class "的方式在Suteki.Shop\Model文件夹下创建了相应的类文件以扩展Shop.dbml中Model类的一些方法和属性声明,如下图:            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2009-05-31 09:09:07
                            
                                1057阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
                在Suteki.Shop中使用了NVeloctiy模版引擎,用于提供可订制的邮件模版。而邮件的功能就是当定单状态发生变化时,系统会向买家发送邮件通知。其中的邮件信息内容就是采用NVeloctiy的模版(.vm扩展名)进行订制的。因为在Sutekie.Shop的最新源码包中只是部分实现了其功能,而全部的功能还在完善中,所以要运行本文中所说的功能,需要在下面的链接地址中下载其最新程序文件(包括单元测试文件):http://code.google.com/p/sutekishop/source/detail?r=282            
                
                    
                        
                                                            
                                                                        
                                                                推荐
                                                                                        原创
                                                                                    
                            2009-06-03 08:20:18
                            
                                2984阅读
                            
                                                                                    
                                1评论