C# Asp.Net MVC 3 项目实现控制器(controller)与页面(view)分项目管理
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
注:域名及端口号修改为你本机调试使用的域名及端口