在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,提供了一个默认的参数。