iT邦幫忙

DAY 12
1

在錯誤中學習ASP.NET MVC系列 第 12

認識Controller - ActionResult

ActionResult

這篇來好好研究一下MVC 5內提供的9種繼承ActionResult的型別,可以參考這個網站,其中我就挑幾個我自己常用的出來說明。

ViewResult

用途是輸出HTML內容,為什麼要先講ViewResult呢,因為這跟第10天講的認識Controller - 加入控制器中提到的錯誤有關係

為什麼加入一個新的Controller後去瀏覽Action會出現錯誤呢?其實這個錯誤到現在我自己到現在還是蠻常遇到的,我們透過錯誤訊息可以得知Controller它找不到相對應的View檔案所以就掛了,這時候就要去新增一個View來呈現資料

將游標停在Action中的程式碼區域內,按滑鼠右鍵>加入檢視

直接按加入

Index.cshtml檔案被建立,路徑在Views/Test/Index.cshtml

再次瀏覽Test/Index 就可以正常顯示Html的畫面囉!

return View() 會去讀取Views資料夾下讀取一樣名稱的Controller資料夾以及同名的cs.html檔案

如果想要換成讀取你自己指定的cs.html也是可以的喔!在View後面打一個(號時會出現多載方法的提示,可以根據自己的需求選擇對應的方法再將參數傳入就可以囉

例如想讀取Views裡面的Home/About.cshtml的話,可以這樣寫

return View("~/Views/Home/About.cshtml");

再來尋找View的順序,從錯誤畫面就可以得知,會先找aspx與ascx的檔案再找cs,html與vb.html,資料夾目錄會先找Views/{Controller}再找Views/Shared資料夾

RedirectResult

在Controller控制流程到最後常常會有轉址的動作,裡如按下會員登出的按鈕之後會導到重新登入的畫面,RedirectRouteResult有四大類方法可以使用

我自己是最常使用RedirectToAction方法

FileResult

當按下"下載"按鈕時常常會連結到一個檔案的url此時瀏覽器就會出現下載的視窗,我自己最常使用FileContentResult這個方法,另外也有FilePathResult與FileStreamResult方法

其實還有很多哩哩摳摳的ActionResult像是JsonResult與ContentResult都蠻常用的,詳細可以參考這個網站,後續有使用到再補充說明


上一篇
認識Controller - Action
下一篇
認識Controller - 傳資料給View
系列文
在錯誤中學習ASP.NET MVC30

尚未有邦友留言

立即登入留言