MVC MVC 路由详解

在项目中我们引用了System.Web.Routing;   Routing的作用:

确定Controller

确定Action

确定其他参数

根据识别出来的数据, 将请求传递给Controller和Action.

Global.asax中

MVC  MVC 路由详解

在App_Start目录中的RouteConfig.cs文件

注册一条路由规则

MVC  MVC 路由详解

name 参数:

 规则名称, 可以随意起名.不可以重名,否则会发生错误,路由集合中已经存在名为 “Default” 的路由。路由名必须是唯一的。

url 参数:

 url获取数据的规则, 这里不是正则表达式, 将要识别的参数括起来即可, 比如: {controller}/{action}

defaults 参数:

 url参数的默认值. 我们只建立了一条url获取数据规则: {controller}/{action}  那么这时就会为action参数设置defaults参数中规定的默认值. new { controller = "Home", action = "Index" }

多条路由规则

MVC  MVC 路由详解

RouteDebug.dll

RouteDebug.dll调试类库放入packages包下,packages文件夹下包含项目用到的所有第三方库。 然后添加引用RouteDebug.dll到项目中。

在Global.asax.cs注册路由之后添加代码:

RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);   重写了路由调试的地址,将已经注册了的路由规则进行测试。

例如:

  //从繁到简的写法,参数多的写前面/难匹配的写前面   多个路由设计

          //  routes.MapRoute(
//name: "FF",
//url: "{controller}-{action}-{id}-{name}",
//defaults: new { controller = "Home", action = "Index" }
//); // routes.MapRoute(
// name: "DD",
// url: "{controller}-{action}-{id}",
// defaults: new { controller = "Home", action = "Index"}
// ); // routes.MapRoute(
// name: "SS",
// url: "{controller}-{action}",
// defaults: new { controller = "Home", action = "Index"}
// ); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

启用测试路由,不管你打开那个Action都会跳到它的测试页面去

  RouteConfig.RegisterRoutes(RouteTable.Routes); //注册路由
BundleConfig.RegisterBundles(BundleTable.Bundles);
//RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); //测试路由
上一篇:MIME协议


下一篇:解析php时间戳与日期的转换