Route 是用来将 request url Mapping 到 action method.
Mapping 的方式是通过 route table 中的设置进行的。对于route talbe 的配置,需要在global.asa 中进行。下面是一个默认的 route.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
url 定义了 次route 对应的 URL的模式。 defaults 参数指明了 url模式中某部分缺失时 所使用的默认值。
所以此 route 处理类似于 http://XXXXX/atricle/index/123 的 url.
url 模式 中的 controller, action 部分是可以省略的。例如下面的这个route. 在这种情况下。controller 和 action都会取默认值
routes.MapRoute(
name: "Auth",
url: "{orgCode}",
defaults: new { controller = "Auth", action = "Index" }
);
url模式中的参数名称 必须和 action method 中的参数名称一致。
例如: URL模式为 url: "{controller}/{action}/{id}",
则action method 中的参数必须为id.
url模式中多个参数的设置。
当action method 中有2个参数时。 可以在URL 模式中如此设置 url: "{controller}/{action}/{Parameter1}/{Parameter2}", Parameter1 和 parameter 2是action method 中的参数名称
route table 中 route的顺序和很重要。
asp.net 找到第一个符合当前 request url 的 route 后就不会在mapping 其后的route 设置。