MVC JsonResultの使い方
5119 ワード
クライアントがアクションメソッドを呼び出し、要求するデータをJSON形式で返す場合、ASP.NET MVCは、CLRオブジェクトをJSON形式に変換して応答するメカニズムを必要とし、これはJsonResultによって解決することができる.MVCでのJsonResultの使い方をご紹介します.
一、MVCにおけるJsonResult定義のコード断片
ここで、JsonResultがobjectタイプを持つ属性Dataは、JSON形式に変換する必要があるデータオブジェクトを表します.属性ContentEncodingとContentTypeは、現在のレスポンスに設定されているエンコード方式とメディアタイプを表し、デフォルトでは「アプリケーション/json」が使用されます.
コメント:
セキュリティ上の理由から、JsonResultはデフォルトではHTTP-GETリクエストへの応答として使用できません.この場合、InvalidOperationException異常が直接放出されます.JsonRequestBehaviorプロパティを使用して、HTTP-GETリクエストに対するJsonResultのサポートを開始できます.この属性タイプはJsonRequestBehavior列挙であり、2つの列挙項目AllowGetとDenyGetはそれぞれHTTP-GET要求に対する応答を許可/拒否することを表す.JsonResultのJsonRequestBehaviorプロパティは初期化時にDenyGetに設定され、作成したJsonResultでHTTP-GETリクエストに応答する必要がある場合は、JsonRequestBehaviorプロパティをAllowGetに明示的に設定する必要があります.
二、ControllerでJsonResultを返す方法
抽象クラスControllerでは、指定されたデータオブジェクト、符号化方法、およびJsonRequestBehaviorに基づいて対応するJsonResultを作成するための一連のJsonメソッドも定義される.
三、MVC JsonResultの例
1、ビューページ
2、コントローラ
一、MVCにおけるJsonResult定義のコード断片
public class JsonResult : ActionResult
{
public override void ExecuteResult(ControllerContext context);
public object Data { get; set; }
public Encoding ContentEncoding { get; set; }
public string ContentType { get; set; }
public JsonRequestBehavior JsonRequestBehavior { get; set; }
public int? MaxJsonLength { get; set; }
public int? RecursionLimit { get; set; }
}
public enum JsonRequestBehavior
{
AllowGet,
DenyGet
}
ここで、JsonResultがobjectタイプを持つ属性Dataは、JSON形式に変換する必要があるデータオブジェクトを表します.属性ContentEncodingとContentTypeは、現在のレスポンスに設定されているエンコード方式とメディアタイプを表し、デフォルトでは「アプリケーション/json」が使用されます.
コメント:
セキュリティ上の理由から、JsonResultはデフォルトではHTTP-GETリクエストへの応答として使用できません.この場合、InvalidOperationException異常が直接放出されます.JsonRequestBehaviorプロパティを使用して、HTTP-GETリクエストに対するJsonResultのサポートを開始できます.この属性タイプはJsonRequestBehavior列挙であり、2つの列挙項目AllowGetとDenyGetはそれぞれHTTP-GET要求に対する応答を許可/拒否することを表す.JsonResultのJsonRequestBehaviorプロパティは初期化時にDenyGetに設定され、作成したJsonResultでHTTP-GETリクエストに応答する必要がある場合は、JsonRequestBehaviorプロパティをAllowGetに明示的に設定する必要があります.
二、ControllerでJsonResultを返す方法
抽象クラスControllerでは、指定されたデータオブジェクト、符号化方法、およびJsonRequestBehaviorに基づいて対応するJsonResultを作成するための一連のJsonメソッドも定義される.
public abstract class Controller : ControllerBase,...
{
//
protected internal JsonResult Json(object data);
protected internal JsonResult Json(object data, string contentType);
protected internal JsonResult Json(object data, JsonRequestBehavior behavior);
protected internal virtual JsonResult Json(object data, string contentType, Encoding contentEncoding);
protected internal JsonResult Json(object data, string contentType, JsonRequestBehavior behavior);
protected internal virtual JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior);
}
三、MVC JsonResultの例
1、ビューページ
Index2
var login = function () {
var data = { "username": $.trim($("#username").val()), "pwd": $.trim($("#pwd").val()) }
// $.post("/Home/Login", data, function (message) {
// if (message.success) {
// alert(message.msg);
// }
// else {
// alert(message.msg);
// }
// }, "json");
$.ajax({ type: "post", url: "/Home/Login", data: data, success: function (message) {
if (message.Success) {
alert(message.Msg);
}
else {
alert(message.Msg);
}
}, dataType: "json"
});
}
Login
Username:
Userpass:
2、コントローラ
using System.Web.Mvc;
namespace Mvc1.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
//
// GET: /Home/Index2
public ActionResult Index2()
{
return View();
}
// Post: /Home/Login
[HttpPost]
public JsonResult Login()
{
string username=Request["username"];
string pwd = Request["pwd"];
message msg = null;
if (username == "rain" && pwd == "m123")
{
msg = new message(true, "Success");
}
else
{
msg = new message(false, "Fail");
}
return Json(msg);
}
}
class message
{
bool success;
string msg;
public message(bool success, string msg)
{
this.success = success;
this.msg = msg;
}
public bool Success
{
get { return success; }
set { success = value; }
}
public string Msg
{
get { return msg; }
set { msg = value; }
}
}
}