文章出處
文章列表
傳統的ASP.NET web form 是假想,用戶請求的URL和服務器上面的文件之間有某種關聯,這里,服務器的工作就是根據接收到的用戶請求,檢索到對應的文件給用戶。這種方式在web form時代很適合,因為ASP.NET頁面是aspx頁面,并且能夠獨立的回復用戶的瀏覽器請求。
但是這中方式在MVC中不合適,在MVC中用戶請求是通過控制器里面的方法來處理的,在MVC中沒有ASP.NET,一對一的文件關聯關系;為了解決這個問題,我們要學會MVC路由機制。
路由機制有兩個功能:
1.檢查收到的URL請求,來判斷這個請求是要請求哪個控制器哪個方法的;
2.生成外部URL(用戶點擊某個鏈接的時候,會有一個請求,通過視圖展現在瀏覽器上面的URL)
現在我們來開始學MVC路由配置吧:
在MVC 框架中,有兩種方式創建路由:
1.基于約定的路由配置
2.特定的路由配置
你可能已經很熟悉了基于約定的路由配置,但是特定的路由配置是MVC5中新增加的。我們在這里都會學習
路由機制不知道,什么是(Controller)控制器,什么是(Actions)方法,它只是提取URL片段,路由的請求處理在后面的處理中,當滿足路由配置的時候,才能得到請求的頁面;
默認的,路由會匹配擁有正確的片段的URL,例如{controller}/{action},會匹配有兩個片段的URL
URL模式是保守的,只會匹配擁有同樣的片段的URL,但是URL模式又是包容的,只要URL有正確的片段,就會檢查片段的值,但不論值是啥。
路由配置是在RouteConfig.cs文件中的;
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 } ); routes.MapRoute( name: "Student", url: "student/{id}", defaults: new { controller = "Student", action = "Index"},
constraints: new { id = @"\d+" }
); }
RegisterRoutes這個靜態方法在Global.asax文件中被調用,程序每次運行的時候,會執行Global文件中的Application_Start()方法,進行路由注冊;
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
,
文章列表
全站熱搜