ASP.NET MVC路由
對於傳統的ASP.NET Web Form應用來說,使用者請求總是指向某個具體的物理檔案,目標檔案的路徑決定了訪問請求的URL。但是對於ASP.NET MVC應用來說,來自瀏覽器的請求總是指向定義在某個控制器Controller型別中的某個Action動作方法,請求URL與目標Controller/Action之間的對映是通過路由來實現的。
ASP.NET 路由
由於來自客戶端的請求總是指向定義在某個Controller型別中的Action方法,且目標Controller和Action的名稱由請求URL決定,所以必須採用某種機制根據請求URL解析出目標Controller和Action的名稱,這種機制便是路由(Routing)。但路由系統並不專屬於ASP.NET MVC,而是直接建立在ASP.NET上,實際路由的核心型別基本上定義在程式集System.Web.dll
中。路由機制同樣可以應用在Web Forms應用中,路由可幫助實現請求地址與物理檔案的分離。
請求URL與物理檔案的分離
對於一個ASP.NET Web Forms應用來說,一個有效的請求對應著一個具體的物理檔案。部署在Web伺服器上的物理檔案可以是靜態的,如圖片或靜態HTML檔案等。 也可以是動態的如.aspx頁面。
對於靜態檔案的請求,ASP.NET會直接返回檔案的原始內容,而針對動態檔案的請求則會涉及相關程式碼的執行。這種將URL與物理檔案緊密捆綁的方式並不是一種很好的解決方案,帶來的侷限性主要體現在:
- 靈活性
物理檔案的路徑決定了訪問它的URL,如果物理檔案路徑發生改變,原本訪問檔案的URL將變得無效。
- 可讀性
URL不僅具備基本的可用性,能夠訪問正確的網路資源,還需具有很好的可讀性。好的URL設計應該有眼看出針對它訪問的目標資源是什麼,請求地址與物理檔案緊密繫結使我們失去了設計高可讀性URL的機會。
- SEO優化
對於網站開發來說,為了迎合搜尋引擎檢索的規則,需對URL進行有效的設計,使之能易於被主流的搜尋引擎檢索收錄。如果URL完全與實體地址關聯,無異於失去了SEO優化的能力。
因此,採用更為靈活的對映機制來實現請求URL與目標路徑的分離。那麼有什麼辦法能夠幫助實現兩者和之間的分離呢?很多人會想到“URL重寫機制”。為了使Web應用可獨立地設計用於訪問應用資源的URL,微軟的IIS7編寫了URL重寫模組,這是一個基於規則的URL重寫引擎,它在URL被Web伺服器處理之前根據定義的規則重定向某個物理檔案。
URL重寫機制在IIS級別解決了URL無實體地址的分離,其實現依賴於一個在註冊到IIS管道上的原生程式碼模組,所以它可以寄存在IIS中的所有Web應用型別。與URL重寫機制不同,路由系統則是ASP.NET的一部分,並通過託管程式碼編寫。
相關文章
- ASP.NET Core MVC 之路由(Routing)ASP.NETMVC路由
- 【ASP.NET Core】動態對映MVC路由ASP.NETMVC路由
- ASP.NET MVC學習筆記:(一)路由匹配ASP.NETMVC筆記路由
- Asp.Net MVC路由引數獲取、替換ASP.NETMVC路由
- ASP.NET MVC 反射例子ASP.NETMVC反射
- asp.net core mvc 分頁ASP.NETMVC
- ASP.Net MVC過濾器ASP.NETMVC過濾器
- ASP.NET MVC – 安全簡介ASP.NETMVC
- ASP.NET MVC – 模型簡介ASP.NETMVC模型
- 將”ListControl”引入ASP.NET MVCASP.NETMVC
- 【ASP.NET Core】MVC控制器的各種自定義:特性化的路由規則ASP.NETMVC路由
- 【備忘】ASP.NET MVC 5 升級到 ASP.NET Core MVC 的部分變化ASP.NETMVC
- ASP.NET MVC Razor檢視引擎ASP.NETMVC
- ASP.NET MVC技能體系圖ASP.NETMVC
- ASP.NET Core MVC 之模型(Model)ASP.NETMVC模型
- asp.net mvc 錯誤頁面ASP.NETMVC
- ASP.NET MVC – 檢視簡介ASP.NETMVC
- ASP.NET + MVC5 入門完整教程三 (上) --- 第一個 MVC 專案_lingshuangcanxue-CSDN 部落格_asp.net mvcASP.NETMVCGC
- 微信掃碼支付(Asp.Net MVC)ASP.NETMVC
- ASP.NET MVC 匯入Excel檔案ASP.NETMVCExcel
- ASP.NET Core MVC 之佈局(Layout)ASP.NETMVC
- ASP.NET Core MVC 之檢視(Views)ASP.NETMVCView
- ASP.NET MVC – 控制器簡介ASP.NETMVC
- ASP.NET MVC隨想錄——漫談OWINASP.NETMVC
- 在ASP.NET Core MVC 2.2 中使用AutoMapperASP.NETMVCAPP
- asp.net core mvc 管道之中介軟體ASP.NETMVC
- 建立一個ASP.NET MVC 5專案ASP.NETMVC
- ASP.NET MVC+LayUI視訊上傳ASP.NETMVCUI
- ASP.NET CORE MVC用時分析工具MiniProfilerASP.NETMVC
- ASP.NET MVC – SQL 資料庫簡介ASP.NETMVCSQL資料庫
- ASP.NET MVC三個重要的描述物件ASP.NETMVC物件
- 【視訊】ASP.NET Core MVC 2.* 入門ASP.NETMVC
- ASP.NET MVC中使用FluentValidation驗證實體ASP.NETMVC
- ASP.NET MVC隨想錄——鋒利的KATANAASP.NETMVC
- 【ASP.NET Core】MVC過濾器:執行流程ASP.NETMVC過濾器
- 【ASP.NET Core】MVC過濾器:常見用法ASP.NETMVC過濾器
- ASP.NET Core MVC專案基礎構建ASP.NETMVC
- asp.net mvc控制器啟用全分析ASP.NETMVC