当前位置: 首页 > news >正文

爱上MVC3~将系统的路由设置抽象成对象吧

对于代码开发来说,抽象至关重要,在MVC3中提供了路由重写功能,你的站点可以按着某种规范去将URL重写,这对于MVC来说是如此的简单,呵呵。

以往的MVC项目,我们习惯上把这种路由配置写在global.ascx里,这事实上不是一种好习惯,因为你的模块多了,路由规范也多了,由这东西多了这后就显得很乱了,将所以不相关的代码放在一起,这本身就是一种代码的坏味道。(我觉得我有必要写一下代码的坏味道系列了,呵呵)

看上去确实不是很美观,所以,我们有必要将这个东西进行抽象,如,我要建立一个与用户相关的路由规范,我可以建立这样一个类:

   /// <summary>
    /// 用户中心的路由规范
    /// </summary>
    public class UserCenterRouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapRoute(
               name: "UserCenter_StudyCenter",
               url: "{controller}/{action}/{flag}-{page}",
               defaults: new { controller = "StudyCenter", action = "Index", flag = 0, page = 1 },
               constraints: new { controller = "StudyCenter" }
           );
        }
    }

而在global.ascx里,只要注册一个它就可以了,代码如下:

   protected void Application_Start()
    {
            AreaRegistration.RegisterAllAreas();
            UserCenterRouteConfig.RegisterRoutes(RouteTable.Routes);//注册用户中心路由
            RegisterRoutes(RouteTable.Routes);//注册默认路由
  }

如果你有其它模块也可以把它们独立出来,这样无论是看上去,还是维护上都比混在一起了的多,呵呵。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:爱上MVC3~将系统的路由设置抽象成对象吧,如需转载请自行联系原博主。

相关文章:

  • Vue2 SSR 的优化之旅
  • Linux~其实shell脚本也很简单
  • tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
  • 【案例分享】电力设备生产数据的多层分组统计报表实现
  • 回顾2016,展望2017
  • SQL的一个排序的问题
  • RabbitMq应用二
  • Oracle Data Guard的配置
  • SolrJ 复杂查询 高亮显示
  • Oracle 11g 启动EM报错的解决方法
  • python第二周数据类型 字符编码 文件处理
  • ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
  • oracle数据库内存调整之增加内存
  • 实战|智能家居行业移动应用性能分析
  • html5--6-23 CSS3中的文字与字体
  • [deviceone开发]-do_Webview的基本示例
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【笔记】你不知道的JS读书笔记——Promise
  • angular2开源库收集
  • Asm.js的简单介绍
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Javascript弹出层-初探
  • Java知识点总结(JavaIO-打印流)
  • js算法-归并排序(merge_sort)
  • MD5加密原理解析及OC版原理实现
  • python_bomb----数据类型总结
  • Service Worker
  • 从setTimeout-setInterval看JS线程
  • 关于Java中分层中遇到的一些问题
  • 观察者模式实现非直接耦合
  • 那些年我们用过的显示性能指标
  •  一套莫尔斯电报听写、翻译系统
  • 移动端 h5开发相关内容总结(三)
  • 用jquery写贪吃蛇
  • 在Unity中实现一个简单的消息管理器
  • gunicorn工作原理
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (arch)linux 转换文件编码格式
  • (Java)【深基9.例1】选举学生会
  • (补)B+树一些思想
  • (待修改)PyG安装步骤
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十六)Flask之蓝图
  • (算法)求1到1亿间的质数或素数
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • ..回顾17,展望18
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 表达式计算:Expression Evaluator
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET简谈设计模式之(单件模式)
  • @RestController注解的使用
  • [2023年]-hadoop面试真题(一)
  • [Android] 修改设备访问权限