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
 
时间: 2024-10-06 20:18:12

MVC JsonResult的用法的相关文章

MVC 中DropDownList 用法

MVC 中DropDownList  用法 后台 1 Dictionary<string, int> dc = new Dictionary<string, int>(); 2 dc.Add("订单提交", 0); 3 dc.Add("订单确认", 1); 4 dc.Add("已入库", 2); 5 dc.Add("代付款", 3); 6 dc.Add("已支付", 4); 7 dc

[转]自定义ASP.NET MVC JsonResult序列化结果

本文转自:http://blog.163.com/[email protected]/blog/static/17174770720121293437119/ 最近项目中前台页面使用EasyUI的jQuery插件开发中遇到,EasyUI Form中的Datebox组件绑定ASP.NET MVC返回的DateTime类型的数据错误,因为ASP.NET MVC返回的DateTime类型的JsonResult的结果中的值是"\/Date(277630788015)\/",于是EasyUI显示

Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)

原理先不了解,只记录常用方法 用法: @EnableWebMvc 开启MVC配置,相当于 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi

MVC中ActionFilterAttribute用法并实现统一授权

MVC中ActionFilterAttribute经常用来处理权限或者统一操作时的问题. 先写一个简单的例子,如下: 比如现在有一个用户管理中心,而这个用户管理中心需要登录授权后才能进去操作或浏览信息,这个时候我们不可能每一个页面都写一遍权限的判断,这个时候就需要我们进行统一判断权限,那么怎么统一权限呢?如果你了解MVC那么下面的代码应该很容易看懂,否则还是先看一下MVC基础吧. 1.创建一个类(用来检查用户是否登录和用户权限)代码如下: // 过滤器    public class Membe

MVC中HtmlHelper用法大全参考

解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web.Mvc.Html之中,主要由7个静态类组成,它们分别是FormExtensions类,InputExtensions类,LinkExtensions类,SelectExtensions类,TextExtensions类,ValidationExtensions类,RenderPartialExtensions类. 为了方便开发者使用Htm

Asp.net MVC JsonResult 忽略属性

指定 JavaScriptSerializer 不序列化公共属性或公共字段.无法继承此类. 命名空间:  System.Web.Script.Serialization 程序集:  System.Web.Extensions(在 System.Web.Extensions.dll 中) public class Person  {         public int ID { get; set; } public string Name { get; set; } public int Age

MVC过滤器的用法(转)

转自:http://www.studyofnet.com/news/257.html APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. 在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置 实现动态Action MVC支持的过滤器类型有四种,分别是:Authorization(授权),Act

Spring MVC的简单用法

一.Multiaction Controller package cn.framelife.mvc.control; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.sprin

mvc JavaScriptResult的用法

一.JavaScriptResult在MVC中的定义的代码片段 C# 代码   复制 public class JavaScriptResult : ActionResult { public override void ExecuteResult(ControllerContext context) { HttpResponseBase response = context.HttpContext.Response; response.ContentType = "application/x-