终于到了MVC的UI层了,也终于要到StructureMap了,不容易啊。本篇文章介绍ASP.NET MVC三层架构中的Controller和View,以及系统中异常处理。 Controller和View其实View没有什么介绍的,就是显示。本章的重点在Controller层,这一层需要注入Service层,同时会有异常处理,具体的异常处理的实现会在下篇文章介绍,本片只是说明一下怎么使用本系统中的异常处理类。 ControllerMVC中的Controller翻译过来是控制器,没错我们只用他来跳转,这里不存在任何的业务逻辑,仅仅向Service中传递View中的数据,然后Service处理业务并返回我们需要结果,之后进行跳转。为什么异常处理放在这里呢,因为我们需要把有好的错误信息返回到页面中,构建一个友好的页面交互。 BaseController的实现
每个单独的Controller都要继承自BaseController,BaseController中放入Controller中一般常用的Service,本系统只放入了ExceptionService,如果你在开发的时候发现很多Controller都需要注入相同的Service,没错把他们放到BaseController是一个很好地选择。 SupplierController同样今天只介绍SupplierController的实现,其他举一反三~
Create(SupplierViewModel vModel) ActionSupplierController中主要介绍的是这个方法,首先我们定义一个规则,一个Action中只有一个return方便以后的维护。然后看一下我们的异常处理Try Catch。这里我们通过_tyExceptionService.HandleException这个方法进行异常的日志记录,这个方法的详细实现将在Exception异常处理文章中向大家说明。用ViewData["ErrorMessage"]传递HandleException方法返回的异常信息到View,当出现异常的时候页面就会看到相应的信息了。 UI的显示层View这一层如果用到强类型View,我们不适用Entity而是DTO工程中的ViewModel,主要是把UI层和Model层分开,降低耦合度。 ViewData["ErrorMessage"]这个错误信息,你可以在页面上找一个合适的位置显示出来就ok了,通常我们把它放到master母版页中。 Controller中的权限管理这个问题对于mvc4你可以参考天屹的MVC4 SimpleMembership权限管理系统的实现,加到里面就可以了。 总结:BaseController的添加使得我们可以把公共的Service都管理起来一起注入。减少了单独Controller中的代码维护。Exception在Controller中捕获,同样更加利于系统的维护。 下一篇我们介绍StructMap的配置,与如何把Service注入到Controller,Repository注入到Service中的具体实现。
|
|
来自: ThinkTank_引擎 > 《MVC_三层》