zoukankan      html  css  js  c++  java
  • MVC路由机制

    机制
      路由机制一般是由路由名称,路由模式和默认值构成的
     
      请求一个ASP.NET mvc的网站和以前的web form是有区别的,ASP.NET MVC框架内部给我们提供了路由机制,当IIS接受到一个请求时,会先看是否请求了一个静态资源(.html,css,js,图片等),这一步是web form和mvc都是一样的,如果不是则说明是请求的是一个动态页面,就会走asp.net的管道,mvc的程序请求都会走路由系统,会映射到一个Controller对应的Action方法,而web form请求动态页面是会查找本地实际存在一个aspx文件。下面通过一个ASP.NET MVC5项目来详细介绍一下APS.NET MVC5路由系统的机制。
      
      先说一下基本的路由规则原则。基本的路由规则是从特殊到一般排列,也就是最特殊(非主流)的规则在最前面,最一般(万金油)的规则排在最后。这是因为匹配路由规则也是照着这个顺序的。如果写反了,那么即便你路由规则写对了那照样坐等404. 当一个URL请求到达应用程序时,路由引擎将遍历所有已注册的路由,检查请求URL是否和URL模式相匹配,然后根据指定的约束验证检索到的URL参数是否有效。一旦路由引擎找到第一个匹配的路由,就会停止遍历。因此,路由的注册顺序非常重要,必须按照从最特殊到最通用的顺序注册。
    比如
      Test的控制器里有两个action
      
    public ActionResult Index()
    public ActionResult Index(
    int id)
      在页面中有一个请求
      Test/Index 或者Test/Index/3 都会出错:
      对控制器类型“TestController”的操作“Index”的当前请求在下列操作方法之间不明确:
      类型 MVCDemo.Controllers.TestController 的 System.Web.Mvc.ActionResult Index()
      类型 MVCDemo.Controllers.TestController 的 System.Web.Mvc.ActionResult Index(Int32)
      因为在这种最一般的情况下,这条URL能够匹配两条路由,用两个方法都行。也就是说,来了一个URL,到控制器里找到两个方法都可以用。
      这就是控制器方法不能重载的原因
  • 相关阅读:
    域名和IP地址的关系通俗解释
    简单卷、跨区卷、带区卷、镜像卷和 RAID5的区别
    什么是网络端口
    Windows7 64 bit 下解决:检索 COM 类工厂中 CLSID 为 {0002450000000000C000000000000046} 的组件时失败
    SQL函数,收藏先。
    C#中抽象类和接口的区别(转)
    SQL数据库碎片检查DBCC SHOWCONTIG含义
    SQL锁表语句
    50种方法优化SQL Server
    简单工厂模式(转)
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/9176211.html
Copyright © 2011-2022 走看看