ASP.NET MVC 設定 Route 使 URL 中不顯示 controller
引言
最近剛開始用ASP.NET MVC,在新建ASP.NET MVC專案時自動生成的例子中,預設的Route是{controller}/{action}/{id},這裡的id是引數,可以省略,但是MVC專案中必須得有controller和action這就使得在URL中必須指明Controller和Action。比如我要訪問那個例子中的登陸頁,就必須寫http://localhost/account/login.如果我們的account系統是單獨開發的,一般已經設定了名為account的虛擬目錄,如果還要在url中指明controller是account,url就會變成類似http://localhost/account/account/login的樣子。下面要做的就是省略url中的controller。其實類似將Account View裡的內容放到根目錄下,但我們不能直接這麼做,需要修改route規則。
實現
最終要實現的是用類似http://localhost/{action}的url替代原來的http://localhost/account/{action},原http://localhost/Home/{action}不受影響。首先在global.asax的RegisterRoutes方法中將原有的routes.MapRoute塊替換為
2 "test",
3 "{action}",
4 new { controller = "Account", action = "Login" }
5 );
其中test為規則名,{action}為匹配URL的規則,new { controller = "Account", action = "Login" }表示預設的controller為account,預設action為login,由於匹配的url中都沒有提供contrller名,所以url匹配此規則的請求最終使用的contrller都是account。這樣url中就不用再出現contrller名了。但是這樣做了以後/Home/{action}下的內容就無法訪問了的,我們需要再新增一個Route規則來匹配/Home/{action},我們在剛才的程式碼下面再新增
2 "Default",
3 "{controller}/{action}",
4 new { controller = "Home", action = "Index" }
5 );
如果將{controller}/{action}改為Home/{action}也行,但是這樣只能匹配Home controller,在當前例子中和上面的程式碼功能上沒有區別,如果新增了其他controller以後就不能匹配新加的controller了。並且上面兩段新增Route規則的程式碼順序不能顛倒,因為在匹配URL時會有順序,一旦匹配成功就不會再往下匹配。如果把下面那段放上面,在位址列輸入http://localhost/login會匹配成controller=login,action=index,這不是我們想要的。
進行上述修改後從url上看似乎就是account資料夾在根目錄下,Home等資料夾在account資料夾下。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-608504/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MVC中獲取當前URL、controller、actionMVCController
- Asp.net MVC – ControllerASP.NETMVCController
- iOS設定tabbar不顯示文字,只顯示圖片iOStabBar
- css設定div元素邊框不顯示CSS
- 【分類不顯示】後臺設定了分類,前臺怎麼不顯示?
- Jbuildx中顯示中文如何設定?UI
- ASP.NET MVC中URL末尾斜槓的實現ASP.NETMVC
- WIN10如何設定通知中心不顯示訊息 WIN10通知中心不顯示訊息設定方法Win10
- asp.net mvc 中利用jquery datatables 實現資料分頁顯示ASP.NETMVCjQuery
- ASP.NET Core MVC 中的 [Controller] 和 [NonController]ASP.NETMVCController
- mac選單欄不顯示了,如何設定?Mac
- Qt中設定視窗居中顯示QT
- 顯示器設定
- windows10圖示不顯示怎麼設定_win10圖示不顯示在桌面如何解決WindowsWin10
- asp.net mvc get controller name and action nameASP.NETMVCController
- 重建程式設計師能力(3)-asp.net MVC框架增加Controller程式設計師ASP.NETMVC框架Controller
- ASP.NET MVC下使用AngularJs語言(八):顯示htmlASP.NETMVCAngularJSHTML
- 雙屏顯示設定
- 設定顯示裝置
- [ASP.NET MVC 小牛之路]07 - URL RoutingASP.NETMVC
- WIN10動態磁貼不顯示內容怎麼設定 WIN10設定動態磁貼不顯示內容方法Win10
- vue-解決background-image:url不顯示問題Vue
- css使文字顯示兩行後顯示省略號CSS
- nvidia顯示設定不可用 nvidia沒有顯示設定
- 如何在 Sway 中設定多個顯示器
- ASP.NET MVC 5 Web程式設計2 -- URL對映(路由原理)ASP.NETMVCWeb程式設計路由
- ASP.NET MVC Controller啟用系統詳解:預設實現ASP.NETMVCController
- win10如何設定桌面顯示圖示_windows10顯示桌面圖示設定方法Win10Windows
- 分享 [ASP.NET]幾個常用的MVC設定ASP.NETMVC
- win10如何設定不顯示最近使用的檔案Win10
- 英偉達控制皮膚沒有顯示設定 英偉達顯示設定不可用
- win10主顯示器設定方法_win10雙顯示器如何設定主顯示器Win10
- Asp.Net MVC系列--進階篇之controller(1)ASP.NETMVCController
- [ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)ASP.NETMVCController
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)ASP.NETMVCController
- Asp.Net MVC2.0 Url 路由入門(轉)ASP.NETMVC路由
- js時間顯示設定JS
- 資料顯示設定攻略