Controller翻譯為「控制器」,為一個類別,且可包含許多方法(Method),這方法會被稱為一個Action或Action方法;透過這些Action,Controller可接受客戶端傳送來的要求與決定回應的View。
其負責使用者的互動邏輯,也就是應用程式收發 request/response的核心;而在管理的功能層叫作「事件層」。
- 首先來自路由的request會先被送到 Controller。
- 再由Controller通知Model調度資料。
- 並且把資料傳遞給View來產生HTML樣板(template),並將呈現資料的 HTML 頁面回傳給用戶端。
在Day06(認識View)中有提到,要如何讓View呈現資料?
答案就是需要透過Controller來控制,範例如下:
using DemoModel.Models; //載入Models來源
namespace DemoMVC.Controllers
{
public class HomeController:Controller
{
DBManger _db = new DBManger(); //宣告DBManger類別為物件
public ActionResult Index()
{
Todo SingleTodo = _db.GiveValue(); //取得Model內資料
return View(SingleTodo); //將資料送出到View呈現
}
}
}
其他說明:
- RouteConfig:
- 系統的路由設定檔(/APP_Start/RouteConfig.cs)。
- Action預設執行方式都是利用此檔範本進行(/{Controller}/{Action}/{id})。
- ActionResult:是用來回傳執行結果的抽象類別。
- ContentResult:回傳純文字文件。
- EmptyResult:回傳空的結果。
- RedirectResult:回傳會重新導向連結,使用路徑(~/Home/Index)的方式。
- RedirectToRouteResult:回傳會重新導向連結,使用RedirecToAction和RedirecToRoute的方法。
- ViewResult:回傳一個檢視(View)結果。
- PatialViewResult:回傳一個部份檢視(PartialView)結果。
- HttpUnauthorizedResult:回傳一個未經授權的錯誤(HTTP Error 401)。
- HttpNotFoundResult:回傳一個找不到資源的狀態(HTTP Error 404)。
- JsonResult:回傳一個JSON結果。
- JavaScriptResult:回傳指令碼執行。
- FilePathResult:回傳一個檔案內容。
- FileContentResult:回傳一個檔案內容,透過二進位資料的方式。
- FileStreamResult:回傳一個檔案內容,透過Stream的方式。
- ActionResult:是Controller Action執行後的回傳結果類型,回傳可使用直接或間接繼承至ActionResult的類別。
好的,今天就先到這兒,明天再來繼續吧!
參考來源:
MVC架構是什麼?認識 Model-View-Controller 軟體設計模式
ASP.NET MVC — Controller