MVC JsonResult的用法


本文導讀:當客戶端調用某個Action方法並希望以JSON的格式返回請求的數據時,ASP.NET MVC需要有一種機制將CLR對象轉換成JSON格式予以響應,而這可以通過JsonResult來解決。下面介紹MVC中JsonResult的用法

一、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表示為當前響應設置的編碼方式和媒體類型,默認采用的媒體類型為“application/json”。

 

備注:

出於對安全的考慮,JsonResult在默認的情況下不能作為對HTTP-GET請求的響應,在這種情況下並會直接拋出一個InvalidOperationException異常。我們可以通過它的JsonRequestBehavior屬性開啟JsonResult對HTTP-GET請求的支持。該屬性類型為JsonRequestBehavior枚舉,兩個枚舉項AllowGet和DenyGet分別表示允許/拒絕支持對HTTP-GET請求的響應。JsonResult的JsonRequestBehavior屬性在初始化的時候被設置為DenyGet,如果我們需要用創建的JsonResult來響應HTTP-GET請求,需要顯式地將它的JsonRequestBehavior屬性設置為AllowGet。

 

二、Controller中返回JsonResult的方法

 

在抽象類Controller同樣定義如下一系列的Json方法用於根據指定的數據對象、編碼方式以及JsonRequestBehavior來創相應的JsonResult。 

 
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、視圖頁面

<!DOCTYPE html>

<html>

<head runat="server">

    <title>Index2</title>

    <script src="/Scripts/jquery-1.4.4。js" type="text/javascript"></script>

<script type="text/javascript">
        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"  });  }  </script> </head> <body>  <div id="nav">  <a href="/Home/Index">ajax+Handler</a>&nbsp; <a>ajax+action</a>  </div>  <div>  <h3>  Login</h3>  Username:<input id="username" name="username" type="text" /><br />  Userpass:<input id="pwd" name="pwd" type="password" /><br />  <button type="button" onclick="login()">  Submit</button>  </div> </body> </html>

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; }  }  } }

轉自:http://www.studyofnet.com/news/594.html
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM