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,到控制器里找到两个方法都可以用。
      这就是控制器方法不能重载的原因
  • 相关阅读:
    win服务大全 (转)
    给大家贴一点好东东 喜欢电影的朋友请看
    滚动字幕的制作 marquee
    嵌入式软件工程师读书计划总纲 转
    优秀男人的十五条标准[转]
    寒冷的冬天到了,我们开始画饼充饥
    如何用.NET创建Windows服务 [转]
    请教:如何进行存储过程的调试
    人际交往(转)
    用户控件 与 Response.Redirect 转向的问题
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/9176211.html
Copyright © 2011-2022 走看看