您的位置:首页 > 编程语言 > ASP

深入理解ASP.NET MVC路由表生成URL原理

2013-05-14 11:50 423 查看
通常我们被推荐在view设计时使用Html.ActionLink(…)产生链接,这样做的优势就是,url可以根据路由表生成。路由机制的另一个职责便是根据路由表生成url,而不是由我们手动编写。接下来深入分析一下其原理。

  类似Html.ActionLink的方法,最终都将通过查询路由表来生成url,跟inbound一样,路由表总是按顺序被依次遍历,直到匹配。每个Route的GetVirtualPath方法负责审查,该方法接受一个RouteValueDictionary参数,该参数实际上就是由相应的Helper提供的。当以下三个条件成立时,认为匹配成功:

  一、每个由大括号定义的参数必须能够找到对应的值。按照优先顺序这些值将有下面三种来源:

  1.RouteValueDictionary参数明确提供的。也就是我们在调用某些有生成url功能的Helper时提供的,比如ActionLink方法;

  2.*从当前请求的上下文的RouteData中;关于这点有更特殊的情况,下面将详细讨论;

  3.Route的Defaults中。

  二、如果每个Defaults集合中的参数与RouteValueDictionary参数中的值都符合,而且这些值没有在url pattern中用大括号定义,那么认为匹配。听起来有点拗口,下面举个例子.

  假如有如下规则:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: