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>");
結果都是一樣的,前提是瀏灠器有支援。
參考資料: