Content、ContentResult

 

ContentResult通常會以純內容形式回應,如

return Content(@"<script>alert('a')</script>", "text/plain");

也可用來吐出 javascript 或 JSON,

其 ContentResult 常跟 AjaxOptions 屬性配合,也就是說常跟 Ajax 技術配合。

 

System.Web.Mvc.Content 有三種多載方法:

ContentResult Content(string content)

ContentResult Content(string content, string contentType)

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

名稱 說明
Content 取得或設定內容。
ContentEncoding 取得或設定內容編碼方式。
ContentType 取得或設定內容的類型。

 

一個吐出 javascript 與 json 範例:

Index.cshtml 內容為

@Html.ActionLink("test","About")

 

HomeController 內容為

using System.Collections.Generic;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return Content(@"<script>alert('這是一個用 JavaScriptResult 的顯示結果');</script>", "text/html");
        }

        public ActionResult Contact()
        {
            Dictionary<string, string> model = new Dictionary<string, string>();
            model.Add("name", "mary");
            return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model), "application/json", System.Text.Encoding.UTF8);
        }
    }
}

 

執行結果為

注意,回傳的內容除了上面的範例之外,

return Content(@"<script type=""text/javascript"">alert('這是一個用 JavaScriptResult 的顯示結果');</script>", "text/html");

return Content(@"<script type=""text/javascript"">alert('這是一個用 JavaScriptResult 的顯示結果');</script>");

return Content(@"<script>alert('這是一個用 JavaScriptResult 的顯示結果');</script>");

結果都是一樣的,前提是瀏灠器有支援。

 

參考資料:

HTTP Header