1. Usage

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

MVC 路由模块分析(一)概述主要分为四个部分进行分析。

First ——Usage;

then ——Extension;

and then ——Design;

last ——Test。

1. Usage1.1 Display RouteData的值MVC针对每一个请求,都会将请求转化为一个RouteData对象,添加到全局路由表中。

RouteData是一个包装类,可以打印其Values和DataTokens。

Eg1:

<tr> <td>Values:</td> <td> <ul> <% foreach (var tmp in RouteData.Values) { %> <li> <%= tmp.Key %> = <%= tmp.Value %> </li> <% } %> </ul> </td></tr><tr> <td>DataTokens:</td> <td> <ul> <% foreach (var tmp in RouteData.DataTokens) { %> <li> <%= tmp.Key %> = <%= tmp.Value %> </li> <% } %> </ul> </td></tr>

Eg2:

public ActionResult RouteDemo(){ foreach (var route in RouteTable.Routes) { var data = route.GetRouteData(HttpContext); Console.WriteLine(route.GetType().FullName); } return View();}

1.2路由到物理文件使用MapPageRoute方法完成此项功能。

步骤:

l 定义URL模板;

l 创建defaults字典;

l 创建dataTokens字典;

l 创建constraint字典;

l 调用MapPageRoute方法

var defaults = new RouteValueDictionary();defaults.Add("areacode", "010");defaults.Add("days", "2");var constraints = new RouteValueDictionary();constraints.Add("areacode", @"0\d{2,3}");constraints.Add("days", @"[1-3]{1}");var dataTokens = new RouteValueDictionary();dataTokens.Add("defaultCity", "深圳");dataTokens.Add("defaultDays", "200000");RouteTable.Routes.MapPageRoute("default", "{areacode}/{days}", "~/Views/Home/RouteDemo.aspx", false, defaults, constraints, dataTokens);

1.3路由忽略调用Ignore方法

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.IgnoreRoute("{filename}.CSS/{*pathInfo}"); //忽略*.css文件的路由

1.4直接注册路由MaPRoute方法实质上就是将路由对象(RouteBase的子类,如Route)添加到路由表中,故而可以直接添加。

Route route2 = new Route("{areacode}/{days}", defaults, constraints, dataTokens, new PageRouteHandler("~/Views/Home/RouteDemo.aspx"));RouteTable.Routes.Add(route2);

1.5缺省URL参数id = UrlParameter.Optional

表明最后一个参数是可选的。此处可以猜测,存在一个解析器来判断UrlParameter。

敬请期待~~

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航