標籤

ASP.NET MVC (29) Visual C# (15) JQuery (10) Plugins (8) JQuery Plugins (6) JavaScript (6) MySQL (5) CSS (4) LinQ (4) Mac OS (4) CentOS (3) Design Pattern (3) Entity Framework (3) IIS (3) Python (3) Windows (3) php (3) Docker (2) LAMP (2) SQL Server (2) WCF (2) .NET (1) .NET Core (1) AWS (1) Browser (1) GIS (1) IE (1) Internet Security (1) Linux (1) Platform (1) React (1) SEO (1) Testing (1) VMware (1) Windows 7 (1) cookie (1) curl (1) laravel (1) phpBB (1) session (1) 中古屋 (1) 透天 (1) 閒言閒語 (1) 面試 (1) 鳥松 (1)

2014年10月4日 星期六

使用ASP.NET MVC 實作購物網站 (四) - 路由簡介(Route) 與 控制器(Controller)


路由規則

如果我們只需要簡單的靜態網頁,那只要理解到Action網址對應就行了。但購物網站一定有基本的增刪查改功能,所以在每個頁面是需要多傳送一些資訊(或者說變數)。例如:

http://localhost/Home/Index [不須傳送變數]
http://localhost/Home/Index/1 [傳送單變數]
http://localhost/Home/Index/?id=1&page=3 [傳送多變數]

不須變數
不須變化的靜態網頁,例如網站關於我介紹。

單變數
單純的CRUD(Create、Read、Update、Delete)操作,基本上只需要index就已足夠

多變數
比較複雜的操作,例如搜尋分頁功能時,需要同時傳送 第幾頁 與 搜尋條件 ,如此就需要同時傳送多個變數至Action


Route範例說明
首先新增一個Controller叫做 RouteTest,步驟如下:

1. 在Controller資料夾按下滑鼠右鍵->加入->控制器



2. 輸入[RouteTestController]後按下[加入]

3. 選擇[MVC 5 控制器 - 空白]後按下[新增]

4. 輸入以下程式碼(文末有原始碼下載)


開始測試
運行專案,輸入以下Url (注意您的port可能會與圖片不盡相同):

1. 不輸入任何參數
http://localhost:51352/RouteTest/Index
Action沒有接收到任何參數


2. 在Url最後位置加上168
Action接收到名為id的參數,值為168


3. 在Url最後加上id=168
得出與2.相同的結果

4. 在Url最後加上id=168&page=911
Action接收到id及page

結論
由此可知在ASP.NET MVC中,若參數不加上名稱預設是id,如果我們想要傳送多個參數,則可以使用具名的方式來傳遞(id;page等)。其中需注意的是傳遞的參數名稱必須要與Action所宣告的參數名稱匹配。

路由在ASP.NET MVC是最基礎的,更進階的Route設定方式可以參考這裡
Attribute Routing in ASP.NET MVC 5

今天的原始碼請參考這裡














沒有留言:

張貼留言