在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
打开我们Demo下的Global.asax.cs文件,可以看到如下代码:
public class MvcApplication : System.Web.HttpApplication 14 { 15 public static void RegisterRoutes(RouteCollection routes) 16 { 17 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 18 19 routes.MapRoute( 20 "Default", // 路由名称 21 "{controller}/{action}/{id}", // Url和参数 22 new { controller = "Home", action = "Index", id = "" } // 默认值 23 ); 24 25 } 26 27 protected void Application_Start() 28 { 29 RegisterRoutes(RouteTable.Routes); 30 } 31 }
我们拣重点说。注意上面有个routes.MapRoute方法。这个方法的作用是向系统增加一条路由规则。这里唯一的一条规则是系统默认增加的,第一个参数是规则名,是一个普通字符串。关键是第二个参数,它也是一个字符串,但是它描述了如何解析url。可以这样理解,它描述了url串HostName后面部分如何匹配,其中带{}的表示参数匹配,如果不带则表示字符串匹配。
13 public class MvcApplication : System.Web.HttpApplication 14 { 15 public static void RegisterRoutes(RouteCollection routes) 16 { 17 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 18 19 routes.MapRoute( 20 "Category", // Route name 21 "Category/Detail/{name}", // URL with parameters 22 new { controller = "Category", action = "Detail", name = "" } // Parameter defaults 23 ); 24 25 26 routes.MapRoute( 27 "Default", // Route name 28 "{controller}/{action}/{id}", // URL with parameters 29 new { controller = "Home", action = "Index", id = "" } // Parameter defaults 30 ); 31 32 } 33 34 protected void Application_Start() 35 { 36 RegisterRoutes(RouteTable.Routes); 37 } 38 }
可以看到,我们在默认规则前增加了一条规则,其中其中控制器名和Action名不再是参数,而变成了强字符串(没有{})。这时,当我们请求的url是http://localhost/Cateogry/Detail/para的形式时,就会直接匹配新加的规则,而para的值不会被赋给成id而是赋给名叫name的变量。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论