iT邦幫忙

DAY 4
1

使用ASP.NET MVC 實作購物網站系列 第 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

今天的原始碼請參考這裡


上一篇
使用ASP.NET MVC 實作購物網站 (三) - MVC概念
下一篇
使用ASP.NET MVC 實作購物網站 (五) - 檢視(View)
系列文
使用ASP.NET MVC 實作購物網站30

1 則留言

0
wilson1966
iT邦研究生 5 級 ‧ 2019-02-12 08:45:16

圖片2 與 圖片3 內容圖片要對調。

我要留言

立即登入留言