MVC路路由規則


使用路由,先引用 "System.Web.Routing",

1、Routing的作用(根據識別出來的數據,將請求傳遞給Controller和Action)。

   1.1、確定Controller(控制器)。

   1.2、確定Action(方法)。

   1.3、確定其他參數。

 2、理解默認的路由規則。

  在App_Start文件夾中有一個RouteConfig.cs的類,里面有一個默認的路由規則。

     

  當一個MVC應用程序首次運行時,會調用Application_Start()方法,這個方法隨后調用了RegisterRoutes()方法。RegisterRoutes()方法創建了路由表。

  默認的路由表包含了一個路由(路由名是Default)、Default路由將Url的第一部分映射到控制器名,Url的第二部分映射到控制器動作,第3部分映射到一個叫id的參數。

  假設在瀏覽器的地址欄中輸入/Home/Index/5,默認地將參數映射成下面的內容:

  Controller = Home

  Action = Index

  id = 5

  當你請求URL /Home/Index/5時,將會執行這行代碼:HomeController.Index(5)

  Default路由包含了所有三個參數的默認默認值,如果不提供控制器,那么控制器的參數默認為Home,如果不提供動作,動作參數默認值為Index,如果你不提供id,id參數默認為空字符串。

 

       例子練習1:

     在地址欄中輸入域名/Home 

      

      由於Default路由參數的默認值,輸入這個Url會調用HomeController控制器中的Index()方法,並使用空字符串作為Id的參數值。

    例子練習2 (不含參數的Index動作):

      地址欄中輸入域名/Home

     

    當在瀏覽器地址欄中輸入域名/Home的時候會調用Index這個方法,那么這個id將被忽略。

 

     例子練習3(使用可空參數的Index動作):

    

       Index()方法擁有一個整數參數。因為這個參數是一個可空參數(可以擁有Null值),因此可以調用Index()而不會引發錯誤。

   

   例子練習4(含有Id參數的Index動作) 

   

     這個時候如果再使用 域名/Home的方式去訪問,異常原因是id為null,需要為其賦值。就會報錯,異常如下:

          

     正確訪問方式是:域名/Home/Index/5

 

3、創建自定義路由。

  

     當在瀏覽器地址欄中輸入 域名/Product/Pro的時候,自定義路由將收到的客戶端請求映射到名為Pro的控制器,然后進行匹配,匹配失敗后執行默認的參數項,就調用了Pro控制器中的Index方法。

 

4、創建路由約束。

       

     根據上面的圖3.1可得出,控制器為Pro的路由默認執行的方法是Details()方法、根據圖3.2可看出Pro控制器中有一個Details()方法,里面需要一個int類型的參數。

  當在瀏覽器地址欄中輸入 域名/Pro/2 的時候會自動執行Details中的方法,然后找到Details視圖。

     當在瀏覽器地址欄中輸入 域名/Pro/ABC,會出現以下異常信息。

     

  根據路由規則只是想匹配包含合適整數prouctId的Url,在定義路由來限制與路由相匹配的Url時,可以使用約束。修改路由約束為:

     

   這個時候在瀏覽器地址欄中輸入 域名/Product/ABC的時候,不會再拋出圖3.3的異常了,這個時候會彈出來一個404的錯誤。

   

 

 

 

    

 

 

 

 

 

   

 

   

 

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM