MVC3 的路由Test

    最近一直在读公司之前写的网站代码,很为其中的路由机制头疼,如何实现控制层的抽离?如何实现全局路由和区域的配合?

    MVC中的控制器是MVC的中转站,请求通过控制器,或者通过访问Service层拿到数据,或者传给View层展示页面。而路由机制,则保证了请求如何找到相对应的控制器。

    1.首先说下如何实现MVC中控制器的抽离。

       第一步:创建MVC3空程序,RouteTest

       第二步:创建类库,RouteTest.Controllers

       第三步:在Controllers类库中,添加Home文件夹,在该文件夹下创建HomeController.cs文件,添加System.Web.Mvc引用

       代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;

namespace RouteTest.Controllers.Home
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
}

       第四步:在MVC程序的View文件夹下,添加Home文件夹,添加视图Index.cshtml

       第五步:在MVC程序的Global.asax文件的RegisterRoutes方法中添加如下代码:

routes.MapRoute(
                "Test",
                "{controller}/{action}/{id}",
                new { controller = "home", action = "index", id = UrlParameter.Optional },
                new string[] { "RouteTest.Controllers.Home" });

         如图所示,           QQ截图20130110170745

         运行,访问localhost域名,获得index页面,即实现控制层的分离。

         注意:里面实现的根本是使用了路由的MapRoute方法

        2.如何实现全局路由和区域的配合

         全局路由写在global文件夹下,区域路由写在相对应区域的根目录下以AreaRegistration为后缀的cs文件。

         规则如下:

         先匹配global文件下的路由,如匹配则访问相对应控制器,如不匹配,则按顺序挨个查找区域路由,按照第一个匹配到的路由规则访问控制器

原文地址:https://www.cnblogs.com/qiuyeyaozhuai/p/2855141.html