7.ASP.NET MVC 5.0中的Routing【路由】

来源:https://www.cnblogs.com/caofangsheng/archive/2019/03/03/10466374.html
-Advertisement-
Play Games

大家好,這一篇向大家介紹ASP.NET MVC路由機制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML幫助類】 】 路由是一個模式匹配系統,它確保你能夠將瀏覽器的請求,傳遞到控制器特定的Action方法上。路由引擎使用路由表,來將瀏覽器發送來的請求UR ...


       大家好,這一篇向大家介紹ASP.NET MVC路由機制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML幫助類】

路由是一個模式匹配系統,它確保你能夠將瀏覽器的請求,傳遞到控制器特定的Action方法上。路由引擎使用路由表,來將瀏覽器發送來的請求URL和路由表中定義的URL進行匹配。RouteConfig文件用來添加路由規則,路由是調用控制器和Action的方式。

我們在Global.asax文件中註冊路由:通過在Application_Start方法中調用RegisterRoutes方法來註冊路由。路由用於創建用戶友好的URLs.路由可以設置程式啟動頁面,就像ASP.NET Web Forms 這樣。路由系統能夠使我們能夠創建任何您想要的url,並以清晰和簡潔的方式表達它們。

下麵是路由引擎來執行路由,路由系統根據,用戶請求的URL,來匹配路由表。如果找到了,就繼續處理,沒找到就拋異常。當ASP.NET 路由引擎在運行的時候收到了這個請求,然後就會為請求的URL,在路由表中找到匹配的規則,如果找到了 ,請求就會接著轉到相應的控制器中,否則就會報HTTP 404錯誤。

 

下麵的圖片中,chapters是控制器,speakers是方法,Actions是可選的,這個URL匹配的是Home/Action這個路由規則,其中Action是Home控制器中的方法,還有路由你可以進一步配置一個可選參數ID,用來指向特定的數據。這就是為什麼路由引擎知道哪些參數是可選的了。

 現在理論知識瞭解差不多了,我們來看看怎麼給MVC應用程式添加路由,以完成從控制器到Action的映射。我們來創建一個項目,動手實踐一下:

創建一個空模板的MVC應用程式。

 

 每一個MVC應用程式都預設創建了路由配置文件RouteConfig,裡面有預設的實現。我們來看看:

可以看到RouteConfig類有一個靜態的RegisterRoutes方法,這個方法在我們程式啟動的時候,從Global.asax文件中進行註冊。除此之外,任何帶有.axd的請求,就會被IgnoreRoute進行捕捉,而交給程式的其他處理機制進行處理。我們可以這樣說,IgnoreRoute用來阻止特殊的路由表,例如Web.Config,圖片文件等等。

MapRoute方法是一個擴展方法,意味著方法已經在路由集合中定義了。代碼裡面定義了預設的路由規則,預設的路由名稱是”Default“,指向的是Home控制器,Index方法,還有一個可選的id參數。

 

路由表在Golbal.asax文件中進行註冊,當程式啟動的時候,Application_Start方法被調用,然後就進行路由註冊。

基本的預設路由配置介紹完了,我們怎麼創建自己的路由規則呢?

首先,我們創建一個Author控制器,然後修改一下裡面的代碼:

 

 

 然後創建AuthorDetail視圖,寫入下麵的代碼:

現在打開RouteConfig文件,創建一個新的路由--【Author】

 

 運行項目:

 

  然後再瀏覽器的URL中輸入9:

現在以QueryString方式,在瀏覽器中輸入:

  

還可以在方法上標註調用的是哪個路由:

 

看這裡我們,就創建了一個路由了Author。大家學會了麽?


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 新聞 "對於F ,Visual Studio 2019 RC有哪些更新" "Visual Studio 2019 RC現在已經發佈" "C 版本與工具的升級" "如何移植桌面應用程式到.NET Core 3.0" "對於Xamarin開發者,在Visual Studio 2019預覽版2中有哪些更新 ...
  • 1. 創建項目 1.1 新建項目 首先新建一個項目,名為 mysite,命令如下: 運行成功,生成一些目錄: 1.2 啟動伺服器 執行成功,看到輸出如下信息: 在瀏覽器中訪問 ,看到以下信息,表示開啟成功(Django2.x 以下版本不一樣): 1.3 新建應用 現在我們新建一個應用(app),名為 ...
  • 題意 設把$n$個不同元素分成若幹個大小相等的集合的方案個數為$res$,求$m^{res}$模$10^9 401$後的餘數。 (n,m不超過2\ 10^9) 分析 可以知道,所求答案為$m^r \bmod P$其中$r=\sum_{d\mid n} \dfrac{n!}{\frac{n}{m}!^ ...
  • 複雜查詢時,單表對應的po類已不能滿足輸出結果集的映射。 所以有些時候就需要關聯查詢_一對一:通過條件查詢結果每個欄位都唯一 一對一:模型裡面有模型 一對多:模型裡面有集合 多對多:集合裡面有集合 方法一:resultType實現,要根據需求建立一個擴展類來作為resultType的類型。(詳細代碼 ...
  • If標簽:作為判斷入參來使用的,如果符合條件,則把if標簽體內的SQL拼接上。 註意:用if進行判斷是否為空時,不僅要判斷null,也要判斷空字元串‘’; Where標簽:會去掉條件中的第一個and符號。 通過if和where通過判斷可以選擇那些語句來執行,那些語句不執行,生成最終SQL語句 在第一 ...
  • 1.VS 安裝完成後,可以重新配置合適的開發環境 第一步: 第二步: 第三步: 第四步:選擇合適自己的開發環境 這裡我選擇常規,具體的可以看視窗右邊的說明 ...
  • 寫在前面 前幾時在寫業務代碼的時候,看到有用到lock這個方法的,而我竟然並不知道是做什麼用的,所以查找了許多博客文章,弄懂了百分之七八十,在此做下筆記。 感謝博客 http://www.cnblogs.com/wolf-sun/p/4209521.html 的解說,該篇博客大部分內容源自於此。 l ...
  • c#類的定義規範 欄位與屬性的比較: 欄位: 欄位主要是為類的內部做數據交換交互使用,欄位一般是private 欄位可以賦值,也可以取值 當欄位需要為外部數據提供數據的時候,請將欄位封裝為屬性,而不是使用公有欄位,這是面向對象所提倡的。 屬性: 屬性一般是向外提供數據,主要用來描述對象的靜態特征,所 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...