回傳文字與物件資料

ASP.NET Core Web 應用開發–使用 MVC 框架 / PART II MVC 的細節 / 動作方法與 ActionResult / 回傳文字與物件資料

當動作方法回傳的是純文字資料可以選擇 ContentResult 物件,將一段指定的純文字顯示在瀏覽器,考慮以下的動作方法:

public IActionResult ContentResponse()
{
    return Content("some mesage .... "); 
}

Content方法回其中指定的參數字串「some mesage ....」,這個動作方法將呈現以下的內容,如以下的左截圖:

右載圖是原始碼,除了訊息字串,沒有其它任何的內容。

當然,如果傳入HTML等網頁相關內容,同樣可以經由瀏覽器解譯,調整如下:

public IActionResult ContentResponse()
{
    return Content("<p style='background-color:black;color:white;padding:1em;'>some mesage ....</p> ", 
                "text/html"); 
}

其中配置p標籤包裝訊息文字,並且以反白呈現,最終會輸出以下的結果:

由於是HTML內容,要記得傳入第二個參數指定contentType為「text/html」,如此一來才會以HTML格式內容傳送。

JsonResult

相較純文字內容,動作方法必須能夠處理更複雜的資料格式,例如表示圖書資料的物件容,這種情形可以選擇回傳JsonResult物件。

假設一有個Book類別配置於Models資料夾,內容定義如下:

public class KTBook
{
     public int BookId { get; set; }
     public string Title { get; set; }
     public int Price { get; set; }
}

現在建立動作方法如下:

public IActionResult JsonResponse()
{
    var book = new KTBook
    {
        BookId = 1001,
        Title = "商業級 ASP.NET MVC 樣式與架構實務",
        Price = 999
    };
    return Json(book);
}

其中最後將建立的Book物件當作參數傳入Json方法,而最終將book以JSON格式字串封裝成為JsonResult物件回傳。

以下是要求動作方法JsonResponse得到的結果畫面:

比較上述book物件的內容,這裏可以看到其中的內容轉換成為對應的JSON格式。

JsonResult通常應用在與Web API搭配,提供API支援前端Ajax呼叫,這一部份於Web API章節進一步作討論。

如果沒有任何內容需要回傳,可以直接建立EmptyResult物件進行return即可,例如以下的動作方法:

public IActionResult EmptyResponse()
{
  return new EmptyResult(); 
}