一、概念
一个产品级别的类很容易达到成百上千行代码。一个类定义在一个*.CS文件中,这就将导致代码文件非常长。在创建类时,大多数代码在确立之后基本上就不再改变了。例如:字段数据、属性和构造函数在生产过程中很少变动,而方法却需要经常改变。这时,你可以将一个类分布到多个C#文件中,这样可以从样板代码中分离出有用的成员。
要实现这种分离就需要用到C#的partial关键字。有partial关键字修饰的类成为分部类。定义分部类必须遵循两点:1、所有分部类的类型名称(即类名)要相同,为同一个类名。2、所有分部类必须定义在同一个命名空间中。
二、partial在asp.net mvc控制器中的应用
asp.net mvc中可以根据产品业务来创建控制器,每个控制器对应产品的一个业务。如果产品的一个业务又可以分出多个需求,那么在这个控制器中会产生大量的代码或者与各个需求相关的方法。
这时,可以通过定义分部类把不同的需求的代码分布在多个类文件中,类文件以不同的需求来进行命名。对于后期维护也是比较方便的。
三、应用实例
1、业务:用户登录
2、业务的需求:实现企业和个人两种用户登录
3、控制器:LoginController
4、方法:EnterpriseLogin(),PersonalLogin()
5、解决方法:创建两个C#文件来分别实现这两个方法,分别定义两个分部类。
四、实现代码
设计如下图
1、EnterpriseLogin
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public partial class LoginController:Controller { //企业用户登录 public ActionResult EnterpriseLogin() { return View(); } } }
2、PersonalLogin
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public partial class LoginController : Controller { //个人用户登录 public ActionResult PersonalLogin() { return View(); } } }
3、访问
用户访问登录页面时url和不采用分部类实现的控制器是一样的。
企业用户登录页
http://localhost:5125/Login/EnterpriseLogin
个人用户登录页
http://localhost:5125/Login/PersonalLogin
根据不同的控制器方法返回不同的页面。