9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>學習電腦>網絡知識>網絡技術>

入門學習ASP.NET MVC路由器

時間: 若木635 分享

  本文是小編帶來入門學習ASP.NET MVC路由器,歡迎大家閱讀。

  作為一個從ASP.NET轉入到ASP.NET MVC的開發人員而言,可能在開發ASP.NET網站的時候就已經開始在使用路由了。只不過在ASP.NET MVC中路由是關鍵部分,而在ASP.NET中需要自行加進去。下面我們將學習ASP.NET MVC中的路由系統。

  一、準備工作

  1.新建一個ASP.NET MVC4項目

  2.模板選擇空

  3.在Controllers中添加一個Home控制器

  4.打開App_Start中的RouteConfig文件

  5.將RouteConfig中默認路由刪掉

  二、入門

  1.基本路由

  RouteConfig.cs:

  然后運行網站,輸入http://localhost:xxxx/Home/Index回車,然后你就能看到對應的頁面了。當然你會認為這個非常簡單,但是我們也需要理解這些是如何做到的。

  下面我們可以看到URL路徑和路由配置中的路徑對比:

  由上面的圖,我們可以得出下面的一組路由數據:

  然后控制器工廠根據這些參數將會調用HomeController中的Index方法,這其中是如何工作的,我們會在后面講解控制器工廠中講到。掌握了上面的基礎之后我們就可以繼續往下學習了。

  2.默認路由

  上面的示例中我們會發現默認打開網站是會報異常的,但是我們通過訪問網站都值需要輸入域名然后就可以看到首頁了,那么我們如何在ASP.NET MVC中做到這種效果呢,下面我們就來介紹。

  RouteConfig.cs

  提示:default中的默認值變量的名稱必須和url中的名稱相同,但是大小寫不限制。

  然后我們重新打開就可以看到正確的結果了。如果你不是通過F5來查看的話,你需要重新編譯一下項目,僅僅刷新瀏覽器可沒有用。

  3.靜態URL片段

  或許你們已經有人嘗試過輸入一些字符在花括號外面,這個其實是允許的。通過這種方式可以制造出更漂亮的路徑,比如我們將路由修改為如下所示:

  通過上面的URL我們可以看出最后我們輸入的路徑應該是這樣的:http://localhost:2392/XHome-Index(:-)是不是非常個性化),如果你是一個愛研究的人你會發現當你把URL的X去掉之后,無法顯示默認的首頁了,但是“/”卻可以,當然這是ASP.NET MVC的核心這么干的,后面我們完全可以改寫。

  4.自定義片段變量

  如果你是一個喜歡依葫蘆畫瓢的人,你一定會在URL中多添加一個花括號,當然你這么做是好的,但是你能夠理解這些花括號捕捉到的值到哪里去了嗎?如果你精通ASP.NET,在控制器中打上RouteData你就可以獲取到這些值了,但是這不是我們想要的結果,下面我們來更深入的學習。

  首先修改RouteConfig.cs的內容:

  然后我們就必須輸入下面這一串路徑才能看到頁面:http://localhost:2392/Home/Index/1你們可以發現最后多了1,而這個1就被{id}捕獲到了,并同時存放在了RouteData中了。這里我們可以通過其他的方式獲取url中所有捕獲到的值。

  打開HomeController.cs,修改Index方法如下:

  接著我們在修改Views/Home/Index.cshtml中的內容,將我們捕捉到的變量顯示出來:

  然后我們重新刷新瀏覽器,就可以看到下面的結果:

  你會發現Index方法的參數名是需要和路由中花括號中的名稱相同,否則就無法捕捉(如果你學了不少ASP.NET MVC的話,其實是可以自定義的)。

  我們可以發現無法直接打開首頁了,這是因為{id}變成了必填參數。下面我們就通過兩種方式來解決。

  (1)設置默認值:

  選擇上面其中一種方式之后,我們又可以直接打開首頁了。

  提示:通過將{id}改成{*id}之后我們就可以獲取http://localhost:2392/Home/Index/后面輸入的所有值了。

  5.二義性

  如果我們在Models中也新建一個Home控制器,那么你會發現重新刷新之后報錯了。而這個是因為無法確定到底選擇哪個控制器來響應該請求的緣故,當然你認為只要我們不新建重名的控制器就可以了,這樣你只能控制你的項目中不出現,但是你卻無法控制你加載的類庫中不會出現,但是ASP.NET MVC已經提供了解決方案給我們,如下改正RouteConfig.cs:

  我們可以看到namespaces參數,通過將命名空間的名稱傳進去就可以起到排除二義性的問題了。

  6.約束路由

  上面我們有一個{id}用來捕獲參數的,但是你也發現了它可以捕捉任何字符串等等,但是我們有時需要限制它,比如讓它只能輸入數字,那么我們就可以使用正則表達式去約束它。

  如下修改RouteConfig.cs:

  我們可以清楚的看到我們通過constraints參數將id參數約束為只能輸入數字,當然你也可以通過一樣的方式去約束其他的參數。通過 httpMethod = new HttpMethodConstraint("GET","POST")可以約束該路由只能通過那種方式訪問。

  如果你的約束是上面無法做到的,那么下面的自定義約束一定會符合你的要求。新建一個自定義的約束只需要創建一個實現IRouteConstraint接口的類即可,比如我們限制只能是谷歌瀏覽器才能訪問,新建一個Filters文件,并新建一個MyRouteConstraint類,寫入如下的代碼:

  接著我們換到不同的瀏覽器去測試,就會發現區別了(如果你通過瀏覽器的開發者工具或者其他工具修改UserAgent的話也可以越過這個約束,如Filddler2工具)

122777 主站蜘蛛池模板: 国产亚洲精品俞拍视频| 国产精品午夜av福利| 日韩有码av中文字幕| 国产成人AV性色在线影院| 亚洲乱理伦片在线观看中字| 亚洲丰满熟女一区二区v| 国产亚洲精品久久久久婷婷图片 | 亚洲精品无amm毛片| 夜夜爽免费888视频| 国产小受被做到哭咬床单GV| 中文在线天堂中文在线天堂| 亚洲AV日韩AV激情亚洲| 一个人在看www免费| 亚洲午夜福利网在线观看| 久久波多野结衣av| 久久99精品中文字幕在| 麻豆国产传媒精品视频| 亚洲av色在线播放一区| 人人妻人人狠人人爽| 亚洲日本韩国欧美云霸高清| 欧美老少配性行为| 亚洲avav天堂av在线网爱情| 亚洲午夜理论无码电影| 免费无码高H视频在线观看| 好吊妞人成视频在线观看| 国产熟睡乱子伦视频在线播放 | 国产成人a在线观看视频免费| 亚洲成av人片一区二区| 精品国产乱子伦一区二区三区| 激情综合网激情综合网五月| 国产不卡在线一区二区| 国产成人av一区二区三| 国产AV国片精品有毛| 欧美国产日产一区二区| 最新中文字幕国产精品| 久久亚洲综合精品成人网| 激情六月丁香婷婷四房播| 99久久机热/这里只有精品| 亚洲国产成人综合熟女| 日韩人妻精品中文字幕专区| 日韩一区二区三区不卡片|