【问题标题】:Dynamic Json via AJAX to an MVC 3 method通过 AJAX 到 MVC 3 方法的动态 Json
【发布时间】:2011-12-15 06:17:32
【问题描述】:

我有一个将动态构造的 Json 传递给控制器​​方法的 jquery AJAX 调用。我面临的问题是,当我的方法被击中时,我没有取回数据......我目前正在尝试使用 JsonResult 并且也尝试了不同的集合,但没有运气。所以我想知道的是我应该使用哪种对象类型来接收这个足够通用的参数来处理我的动态 Json 结构?我还使用 http://jsonlint.com/ 测试了我的 Json 是否有效

查看代码:

$(".saveButton").click(function () {

    var jsonObjects = GetValues();

    $.ajax({            
        type: "post",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        url: "@Url.Action("SaveChanges", "Contact")",
        data: JSON.stringify(jsonObjects),            
        success: function(result) {

      }

    });        

}); 

控制器代码:

<HttpPost()> _
Public Function SaveChanges(ByVal data As JsonResult) As ActionResult

   Return View()

End Function

任何建议将不胜感激!

【问题讨论】:

  • 您发布的数据是否真的是动态的,因为它可能包含完全未知属性的任意组合?还是发布已知属性的动态值(或值数组)?
  • 如果您发布的项目是真正动态的......完全未知和不可知,您如何预期在控制器操作中使用这些值?你怎么知道把什么放在哪里?通常,您需要使用索引位置或参数名称。
  • 我有来自外部的上下文,它为我提供了有关如何存储数据的信息。

标签: jquery ajax json asp.net-mvc-3


【解决方案1】:

我说将它作为字符串传递,就是这样,因为您使用的是 stringify。然后,您可以从控制器代码中的字符串反序列化 JSON。

【讨论】:

    【解决方案2】:

    您需要更改函数以返回 Json 而不是视图。我不是 VB 程序员,但正在查看 this 解决方案,以下内容应该可以帮助您入门:

    Return Json(New With {Key
        .someList = resultList,
        .someInt = resultInt},
         JsonRequestBehavior.AllowGet)
    

    您需要修改匿名对象以返回所需的值。

    【讨论】:

    • 问题是控制器方法没有接收到任何数据。 “数据”参数为空。
    【解决方案3】:

    以下是某人做类似事情的示例:
    http://www.amazedsaint.com/2011/02/aspnet-mvc-dynamic-json-jquery.html

    不过,这些示例是用 C# 编写的。

    【讨论】:

    • 以前是文章,但在我正在使用的 .net 版本中找不到包含 JsonValue 对象的程序集...
    • 使用 Nuget,安装 Microsoft 的“WebApi”包以添加对您的项目的引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多