前面有提過Controller是MVC架構中的C,主要是Model和View的橋樑。
一般如果要開始設計一個MVC的功能,我會先從建Controller開始,以VisuoStudio2019為例。
以下部分會帶入一些MVC5的觀念。
新增控制器
方案總管->加入->控制器(Controller)->MVC5控制器(空白) 即可完成Controller模板(cs檔)
命名一個名稱為MyController會繼承Controller類別(參考官方文件)
public class MyController : Controller
{
public ActionResult HelloWorld()
{
ViewData["Message"] = "Hello World!";
return View();
}
}
說明一下甚麼是ActionResult類別,同樣參考官方文件
//
// 摘要:
// Represents the result of an action method.
public abstract class ActionResult
{
protected ActionResult();
public abstract void ExecuteResult(ControllerContext context);
}
ActionResult就是執行Action的结果。最後執行ExecuteResult方法,View是ActionResult的子類別ViewResult來完成的。ActionResult主要的幾個衍生類別如下:
這邊介紹幾個我自己常用的:
FileResult
回傳檔案
JsonResult
回傳JSON物件
##FileResult
主要用於回傳檔案、檔案下載的時候
public FileResult TestFileResult()
{
string excelPath = "C:\test.xlsx";
return File(excelPath, "application/vnd.ms-excel", "Test.xlsx");
}
##JsonResult
主要用於回傳前端ajax的請求時用
public JsonResult TestJsonResult()
{
return Json(new { success = true, message = "成功!" }, "application/json");
}
MVC請求導頁練習
最後,關於導頁的觀念給各位練習一下,想想看看會去哪個頁面呢?
由於有設定route
app.UseMvc(routes =>
routes.MapRoute("default", "{controller=View}/{action=Index}/{id?}"));
以下幾個網址最後會導到的地方大家可以想想看到哪