在Asp.net MVC中,对于一个请求,是通过路由找到对应的Controller类中的对应Action,并与model进行交互,最后返回到view。
就是说Asp.net MVC是用Route来定义各种URL到实际处理程序之间的映射的。
在处理请求之前,在Global.asax.cs文件的Application_Start中注册路由
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }
然后在RouteConfig类中
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
应用程序默认为路由增加了2个路由对象:
1. routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 这个路由是用于忽略特殊请求的路由,这个路由忽略所有扩展名为.axd的请求。
2. routes.MapRoute(....);这个路由可以映射任何符合{controller}/{action}/{id}模式的URL,提供了一个默认的参数。