zoukankan      html  css  js  c++  java
  • 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文件下的路由,如匹配则访问相对应控制器,如不匹配,则按顺序挨个查找区域路由,按照第一个匹配到的路由规则访问控制器

  • 相关阅读:
    leetcode第四题
    解决Hystrix主线程结束,子线程拿不到request
    RabbitMQ如何保证消息的顺序性+解决消息积压+设计消息队列中间件
    RabbitMQ 如何保证消息不丢失?
    redis布隆过滤器的使用
    PageHelper自定义count
    mysqlbinlog 工具分析binlog日志
    linuxubuntu常用命令
    MySQL 常用命令
    Ubuntu 16.04 安装 Apache, MySQL, PHP7
  • 原文地址:https://www.cnblogs.com/qiuyeyaozhuai/p/2855141.html
Copyright © 2011-2022 走看看