C# Asp.Net MVC 3 项目实现控制器(controller)与页面(view)分项目管理
一、引言 ASP.NET MVC 是微软发布的的另一套开发 web 项目开发框架(之前一直用的是 webform)。 MVC 将页面(Html)代码和 c# 代码进行了分目录管理,html 文件放到了views 目录下, 而页面的访问全部放到了 controllers 目录下,他们之间使用路由(routing)彼此进行关联。 目录功能 views 目录存放 html 页面 controller 目录存放 c# 代码文件 Global.asax.cs 文件中一般存放注册路由的代码 注:在 mvc3.0 后加入了控制层域(area ) 的感念, 只要继承 AreaRegistration 的类都 可以自定义路由,同时必须需要重写 AreaName 属性 和 RegisterArea 方法
先看一下默认的 mvc 项目结构
FMS ├┬ Controllers │└ DirController.cs ├┬ Views │└┬ Dir │ └ Index.aspx └┬ Global.asax └ Global.asax.cs
二、目标 我们需要实现的效果就是,将所有的 .cs 文件提到其它的项目(FMS.Ctrl)中。 实现后的项目结构如下
FMS ├┬ Views │└┬ Dir │ └ Index.aspx └─ Global.asax
FMS.Ctrl ├┬ Controllers │└ DirController.cs ├ FmsAreaRegistration.cs └ MvcApplication.cs (原 Global.asax.cs 文件)
三、实现步骤
1.首先,将整个 Controllers 文件夹及所有内容到移到 FMS.Ctrl 项目的根目录下, 依次修改 Controllers 文件夹下所有类的命名空间为 “Fms.Ctrl.Controllers”, 并删除原项目目录及所有内容。 DirController.cs 的文件如下 namespace Fms.Controllers { public class DirController : Controller { public ActionResult Index() { return View(); }
} }
2.移动 Global.asax.cs 到 FMS.Ctrl 项目的跟目录下,重命名为 MvcApplication.cs, 并修改命名空间为 Fms.Ctrl,删除原项目下内容。
3.注册新的路由 —— 控制层域(area ) 新建一个类文件命名为 MFmsAreaRegistration.cs 并继承 AreaRegistration 类, 重写基类的 AreaName 属性 和 RegisterArea 方法代码如下。 namespace Fms.Ctrl { public class FmsAreaRegistration : AreaRegistration { public override string AreaName { get { return "Fms"; } }
public override void RegisterArea(AreaRegistrationContext context) { //注册路由器的命名空间 string[] controllerNamespaces = new string[] { "Fms.Ctrl.Controllers" }; context.MapRoute( "Fms_default", "{controller}/{action}.aspx", //我喜欢用 ***.aspx 的url访问,所以路由注册写成了这样子 new { controller = "Explorer", action = "Index" }, null, controllerNamespaces ); } } }
4.最后一步很关键,就是让MVC项目(FMS)和 Controller项目(FMS.Ctrl)进行关联 打开 FMS.Global.asax 文件,将内容修改为以下代码 <%@ Application Inherits="Fms.Ctrl.MvcApplication" Language="C#" %>
注:Inherits 属性值为 Global.asax.cs 类文件重命名后的 MvcApplication.cs 文件下 MvcApplication 类的完全限定名。
5.测试一下修改后的项目访问是否正常 http://localhost:17682/Dir/Index.aspx
注:域名及端口号修改为你本机调试使用的域名及端口
转载于:https://www.cnblogs.com/xxj-jing/archive/2012/01/18/2890089.html