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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...