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

来源:互联网 发布:如何对付淘宝无良卖家 编辑:程序博客网 时间:2024/05/24 04:22
 

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

  注:域名及端口号修改为你本机调试使用的域名及端口
 
 

 

 

 

 

原创粉丝点击