1. 程式人生 > >淺析ASP.NET MVC路由配置

淺析ASP.NET MVC路由配置

URL相關概念

      http://example.com/albums/list.aspx  我們可以確定該站點的目錄中含有一個albums資料夾,並且在該資料夾下還有一個list.aspx檔案

URL和檔案系統之間這種一一對應關係並不適用大部分基於MVC的Web框架。一般來說,這些框架採用不同的方法將URL對映到某個類上的方法呼叫,而不是對映到磁碟上的某個物理檔案,這些對映到的類通常稱為控制器。URL是統一資源定位符(Uniform Resource Locator)的首字母縮寫,但這種情況下,資源是一個抽象的概念,既可以指一個檔案,也可以指方法呼叫的結果或伺服器上的一些其他內容。

路由概述

ASP.NET MVC框架中的路由機制主要有兩種用途:

匹配傳入的請求(該請求不匹配伺服器檔案系統中的檔案),並將這些請求對映到控制器操作。

構造傳出的URL,用來相應控制器中的操作。

路由的定義

每個ASP.NET MVC應用程式都至少需要一個路由來定義自己處理請求的方式,但通常情況下,程式總是有一個或多個路由。路由的定義是從URL模式開始的,因為它指定了與路由相匹配的模式。路由可以指定它的URL及其預設值,除此之外,它還可以約束URL的各個部分,提供關於路由如何、何時與傳入的請求URL相匹配的嚴格控制、

     在剛建立的一個ASP.NET MVC應用程式中,Global.asax.ax—Application_Start方法中抵用了一個名RegisterRoutes方法,用來為應用程式註冊需要的路由

例子:一個非常簡單的註冊路由方法:

<span style="font-size:18px;">public static voidRegisterRoutes(RouteCollection routes)
{
   routes.MapRoute("simple","{first}"/"{second}"/"{third}")
}</span>

MapRoute方法最簡單形式是採用路由名稱和路由的URL模式。


 

路由URL由若干個URL段(段是指兩個“/”之間的所有內容,不包括兩端的斜槓)組成,每個段都包含了一個由一對花括號限定的定位符引數。

ASP.NET MVC框架要求使用一些特定的引數名稱——{controller}和{action}

上面的例項如果真的要請求,會出現錯誤,贏修改為

public static voidRegisterRoutes(RouteCollection routes)
{
   routes.MapRoute("simple","{controller}"/"{action}"/"{id}")
}


第一個引數是控制器名,第二個是action方法名,第三個是方法的引數,如果沒有引數,只匹配前兩個。

 

路由約束


相應約束:{[email protected]“\d{4}”,[email protected]"\d{2}",[email protected]"\d{2}"},使用正則表示式約束,和Regex類使用的格式相同。

路由機制將忽略那些對映到磁碟物理檔案的請求—— IgnoreRoute、StopRoutingHandler

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 public static voidRegisterRoutes(RouteCollection routes)
{
   routes.Add(new Route
    (
           "{resource}.axd/{*pathInfo}",
      new StopRoutingHandler()
    )
}


路由的除錯——Routing Debugger

引用RouteDebug.dll(自己下載)

然後

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            // 預設情況下對 Entity Framework 使用 LocalDB
            Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);//路由除錯
        }

結果:

 

相關推薦

淺析ASP.NET MVC路由配置

URL相關概念       http://example.com/albums/list.aspx  我們可以確定該站點的目錄中含有一個albums資料夾,並且在該資料夾下還有一個list.aspx

史上最全的ASP.NET MVC路由配置,以後RouteConfig再弄不懂神仙都難救你啦~

繼續延續坑爹標題系列。其實只是把apress.pro.asp.net.mvc.4.framework裡的CHAPTER 13翻譯過來罷了,當做自己總結吧。內容看看就好,排版就不要吐槽了,反正我知道你也不會反對的。 先說一下基本的路由規則原則。基本的路由規則是

史上最全的ASP.NET MVC路由配置,以後RouteConfig再弄不懂神仙都難救你啦

繼續延續坑爹標題系列。其實只是把apress.pro.asp.net.mvc.4.framework裡的CHAPTER 13翻譯過來罷了,當做自己總結吧。內容看看就好,排版就不要吐槽了,反正我知道你也不會反對的。 XD 首先說URL的構造。 其實這個也談不上構造,只是語

淺析Asp.net MVC 中Ajax的使用

x11 生成 table ex18 review arp javascrip tle func 在ASP.NET MVC beta中我們可以使用Ajax.BeginForm, Ajax.ActionLink來進行Ajax調用,同樣我們也可以使用一些支持Ajax 框架如jQ

ASP.NET沒有魔法——ASP.NET MVC路由

文件相對路徑 register 以及 out insert 技術分享 順序 reg 沒有   之前的文章中介紹了My Blog文章維護功能的開發,開發過程中使用Area的方法建立了用於維護文章的Controller、View和Model。但是無論代碼怎麽變對於瀏覽器來說都是

Asp.Net MVC 路由

oba ica 除了 xxx eas url hello register 可選參數 Asp.Net MVC 路由 使用URL請求應用程序時,該請求最終是通過Handler來完成,Asp.Net MVC 是通過一個自定義的HttpHandler--MVCHandler來實

ASP.NET MVC路由擴充套件:連結和URL的生成

ASP.NET 路由系統通過註冊的路由表旨在實現兩個“方向”的路有功能,即針對入棧請求的路由和出棧URL的生成。前者通過呼叫代表全域性路由表的RouteCollection物件的GetRouteData方法實現,後者則依賴於RouteCollection的GetVirtualPathData方法,而最終還是落

ASP.NET MVC路由擴充套件:路由對映

上週我寫了三篇文章(一、二、三)詳細地介紹了ASP.NET的路由系統。ASP.NET的路由系統旨在通過註冊URL模板與物理檔案之間的對映進而實現請求地址與檔案路徑之間的分離,但是對於ASP.NET MVC應用來說,請求的目標不再是一個具體的物理檔案,而是定義在某個Controller型別中的Action方法。

一、ASP.NET MVC 路由(一)--- ASP.NET WebForm路由模擬

      ASP.NET WebForm 應用,使用者請求的是物理檔案,其中包括靜態頁面和動態頁面,在Url中的顯示都是伺服器中一個物理檔案的相對路徑。但是ASP.NET MVC就不同了,使用者請求的是Controller中一個Action方法,這種請求是通過路由將Url對映到相對的Controller

asp.net mvc路由重寫及偽靜態的粗淺理解

關於路由 ASP.NET MVC中一個重要的內容就是路由,關於路由簡單的理解就是瀏覽器提出請求,然後通過路由表將請求匹配到相應的MVC控制器! 第一種方式可以在web.config 裡面修改

ASP.NET MVC路由系統的核心物件介紹

         眾所周知,ASP.NET MVC有一套自己的路由系統。這套路由系統是在原來的ASP.NET 路由系統上擴充套件過來的。今天這篇文章就來聊聊MVC路由系統中非常關鍵的一些物件。         ASP.NET MVC路由系統主要由以下幾個核心物件:    

Asp.net mvc中使用配置Unity

ges mage bsp 使用 cacti .cn 技術 效果展示 onf 第一步:添加unity.mvc 第二步:在添加之後會在app_start中生成UnityConfig.cs,UnityMvcActivator.cs 第三步:使用 第四步:效果展示 Asp

asp.net MVC 5 路由 Routing

onf 模型 控制 ace 讓我 view 字符 blog cal ASP.NET MVC ,一個適用於WEB應用程序的經典模型 model-view-controller 模式。相對於web forms一個單一的整塊,asp.net mvc是由連接在一起的各種代碼層所組成

ASP.NET沒有魔法——ASP.NET MVC 與數據庫之EntityFramework配置與連接字符串

client frame view 必須 多個數據庫 epo get base fault   前幾篇文章中介紹了如何使用Entity Framework來操作數據庫,但是對EF的配置、連接字符串的指定仍然存在一些疑問。  本章將對EF的配置進行介紹。  EF可以通過兩種方

Mvc多級Views目錄 asp.net mvc4 路由重寫及 修改view 的尋找視圖的規則

目錄 for .net bool action htm 命名 resource 訪問規則 一般我們在mvc開發過程中,都會碰到這樣的問題。頁面總是寫在Views文件夾下,而且還只能一個Controller的頁面只能寫在相應的以 Controller名命名的文件夾下。如果我們

ASP.NET MVC中的路由IRouteConstraint方法應用實例

http col spa Go clas .aspx direct lec rep 在如下代碼的寫法中: public class RouteConfig { public static void RegisterRoutes(RouteColle

asp.net mvc獲取路由參數

如何獲取 其他 htm ted ext 發現 ID arp value 學習了mvc有一段時間了,本以為直接可以通過request對象直接獲取路由參數呢,後來實驗了一下發現想錯了,mvc有專門獲取路由參數的方式,在不同的地方,獲取路由參數的方式也不一樣,這裏分別說一下,在c

Asp.Net MVC及Web API框架配置會碰到的幾個問題及解決方案(轉)

erb his 控制 NPU vat types ror 控制器 動手 前言 剛開始創建MVC與Web API的混合項目時,碰到好多問題,今天拿出來跟大家一起分享下。有朋友私信我問項目的分層及文件夾結構在我的第一篇博客中沒說清楚,那麽接下來我就準備從這些文件怎麽分文件夾說起

【隨筆系列】Asp.Net Mvc分頁控件PagedList的使用方法及配置

provide 自動添加 pac png eight 鼠標 技術分享 apps con     企業在做Asp.Net Mvc開發過程中,很多時候都是一些CRUD,最基本的就是一個列表頁面,然後附帶一些功能按鈕。如果有數據列表,大多數就會涉及到對數據進行分頁,這次就介紹一下

ASP.NET MVC 實現頁落網資源分享網站+充值管理+後臺管理(7)之擴充套件基類和區域建立以及文字編輯配置

    一、擴充套件基類和區域建立     (1)在應用之前,我們先在表現層建立一個公共的系統擴充套件檔案來(SystemExtension)存放我們需要延伸和擴充套件的方法類。     在常規的專案系統操作中,我們都需要用到