什麼是Route?
- 像是郵差依據包裹上的地址,透過地圖找到目的地然後投遞。
- 而對應到程式中 [網址] 就是你包裹要送達的目的地址,Route 就是 [地圖],而網址的 [參數] 就是你要投遞的包裹。
不須變數的Route
- 不須變化的靜態網頁,例如網站關於我介紹。
http://localhost/Home/Index
- 執行後在首頁點擊 [關於]
- 關於頁的網址為 /Home/About
- 再點擊一次網頁的 [關於] 按鈕
- 顯示 “Your application description page.”
HomeController
C:\Users\USER\Documents\GIT\Keep_accounts\mymoney\mymoney\Controllers\HomeController.cs
RouteConfig
C:\Users\USER\Documents\GIT\Keep_accounts\mymoney\mymoney\App_Start\RouteConfig.cd
- Name︰你對於這個Route的命名
- Url︰網址條件,當網址符合這個條件特徵時,就會依據這個Route的指示去找對應執行的程式碼
- defaults︰
- 參數的預設值
- id = UrlParameter.Optional表示它是選擇性的,如果沒有沒關係
- 舉個栗子︰
Route Url︰ /{controller}/{action}/{id} 關於頁網址︰ /Home/About #id現在沒有值 首頁網址︰ / #啥都沒有 --->參考Default=/Home/Index
建個新 Controller 在繼續
- 在 Controller 資料夾按下滑鼠右鍵 -> 加入 -> 控制器
- 輸入 [RouteTestController] 後按下 [加入]
- 選擇 [MVC 5 控制器 - 空白] 後按下 [新增]
單變數與多變數的Route
單變數
- 單純的 CRUD(Create、Read、Update、Delete)操作,基本上只需要 index 就已足夠
http://localhost/Home/Index/1
多變數
- 比較複雜的操作,例如搜尋分頁功能時,需要同時傳送 第幾頁 與 搜尋條件 ,如此就需要同時傳送多個變數至 Action
http://localhost/Home/Index/?id=1&page=3
RouteTestController
C:\Users\USER\Documents\GIT\Keep_accounts\mymoney\mymoney\Controllers\RouteTestController.cs
namespace mymoney.Controllers
{
public class RouteTestController: Controller
{
public ActionResult Index() //不輸入任何參數
{
return Content("這是index");
}
public ActionResult Index2(string id) //單變數
{
return Content(
String.Format("Id值為{0}", id);
);
}
public ActionResult Index3(string id, string page) //多變數
{
return Content(
String.Format("Id值為{0}, page值為{1}", id, page);
);
}
}
}
- 舉個栗子:
Route Url : /{controller}/{action}/{id} Index頁: /RouteTest/Index 代個id: /RouteTest/Index2/cleo 代個?id: /RouteTest/Index2/?id=cleo 代個id和page:/RouteTest/Index3/id=cleo&page=911
參考文獻
- https://progressbar.tw/posts/105
- https://ithelp.ithome.com.tw/articles/10158071