C# Asp.Net MVC 3 项目实现控制器(controller)与页面(view)分项目管理

it2022-05-05  79

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


最新回复(0)