iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 24
0

每一個Controller的Action方法執行完成最後一定要回傳實作的ActionResult抽象類別的型別,如最常看到的return View();,其實就是回傳ViewResult的型別。

以下9個是目前Asp.net MVC5繼承ActionResult抽象類別的回傳型別

繼承類別 Controller方法 用途
ContentResult Content() 回傳文字內容
ViewResult View() 回傳HTML
FileResult File() 輸出檔案
HttpNotFoundResult HttpNotFound() 回應HTTP狀態碼(500、404)
JsonResult Json() 輸出Json
PartialViewResult PartialView() 部分HTML
RedirectResult Redirect();RedirectPermanent() 重新導向URL
RedirectToRouteResult RedirectToAction()-RedirectToActionPermanent()-RedirectToRoute()---RedirectToRoutePermanent() 使用路由,進行URL導向

ContentResult

多載型別

ContentResult Content(string content)

ContentResult Content(string content, string contentType)

ContentResult Content(string content, string contentType, Encoding contentEncoding)

參數說明

Content :取得或設定內容。
ContentEncoding :取得或設定內容編碼方式。

System.Text.Encoding:https://msdn.microsoft.com/zh-tw/library/system.text.encoding(v=vs.110).aspx
ContentType :取得或設定內容的類型。
MIME:https://zh.wikipedia.org/wiki/%E5%A4%9A%E7%94%A8%E9%80%94%E4%BA%92%E8%81%AF%E7%B6%B2%E9%83%B5%E4%BB%B6%E6%93%B4%E5%B1%95

範例

public ActionResult ContentDemo(){
    return Content("Hello World!");
}

public ActionResult ContentDemo(){
    return Content("<h1>Hello World!</h1>","text/html");
}

public ActionResult ContentDemo(){
    return Content("<h1>こんにちは</h1>","text/html",Encoding.UTF8);
}

EmptyResult

EmptyResult類別的ExecuteResult方法沒有實作任何程式碼,表示沒有任何作用的結果,例如不會傳回任何值的控制器動作方法。
EmptyResult SourceCode

protected virtual ActionResult CreateActionResult(ControllerContext controllerContext, ActionDescriptor actionDescriptor, object actionReturnValue) {
    if (actionReturnValue == null) {
        return new EmptyResult();
    }

    ActionResult actionResult = (actionReturnValue as ActionResult) ??
        new ContentResult { Content = Convert.ToString(actionReturnValue, CultureInfo.InvariantCulture) };
    return actionResult;
}

用意在於,在程式碼中直接回傳null並不好,取而代之,遵循了物件導向(OO)的方式,來回傳一個空物件,再MVC裡面即使return null,MVC也會判斷是EmptyReuslt而將執行方法丟給EmptyResult來回傳。


上一篇
Day23_NET Framework提供的診斷處理方式
下一篇
Day25_Controller之ActionResult(2)
系列文
從Asp.Net MVC5的起跑點認識現代網站30

尚未有邦友留言

立即登入留言