文章出處

     傳統的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);
        }

 

 

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()