【问题标题】:JSON and ASP.NET MVCJSON 和 ASP.NET MVC
【发布时间】:2010-09-11 04:45:34
【问题描述】:

如何使用 ASP.NET MVC 通过 AJAX 调用将序列化的 JSON 对象返回到客户端?

【问题讨论】:

    标签: c# asp.net-mvc ajax json


    【解决方案1】:

    您可以从控制器返回一个 JsonResult:

    public ActionResult MyAction()
    {
        ... // Populate myObject
        return new JsonResult{ Data = myObject };
    }
    

    当然,Ajax 调用的形式取决于您使用的库。使用 jQuery 会是这样的:

    $.getJSON("/controllerName/MyAction", callbackFunction);
    

    callbackFunction 带有一个参数,该参数是来自 XHR 请求的数据。

    【讨论】:

    • 如何将参数传递给 MyAction?
    • 评论中没有格式,但是... $.getJSON("/controllerName/MyAction", { id: 7 }, callbackFunction);
    【解决方案2】:

    根据您的语法偏好,以下方法也适用:

    public ActionResult MyAction()
    {
        return Json(new {Data = myObject});
    }
    

    【讨论】:

      【解决方案3】:

      这是一小段代码,用于了解我们如何在 MVC 控制器中使用 JsonResults。

         public JsonResult ASD()
          {
          string aaa = "Hi There is a sample Json";
          return Json(aaa);
          }
      

      【讨论】:

        【解决方案4】:

        你也可以 System.Web.Script.Serialization;如下

        using System.Web.Script.Serialization;
        
        public ActionResult MyAction(string myParam)
        {
        
            return  new JavaScriptSerializer().Serialize(myObject);
        }
        

        阿贾克斯

        $.ajax({
            type: 'POST',
            url: '@Url.Action("MyAction","MyMethod")',
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ "myParam": "your data" }),
            success: function(data)
            {
                console.log(data)
            },
            error: function (request, status, error) {
        
            }
        });
        

        【讨论】:

          【解决方案5】:

          如果您需要发送 JSON 以响应 GET,则需要使用 JsonRequestBehavior.AllowGet 明确允许该行为。

          public JsonResult Foo()
          {
              return Json("Secrets", JsonRequestBehavior.AllowGet);
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-09-24
            • 2015-03-12
            • 1970-01-01
            • 2011-08-23
            • 1970-01-01
            • 2016-01-08
            • 2017-12-15
            相关资源
            最近更新 更多