通过隐藏变量传递复杂的 json 并在 mvc 3 控制器中读取

Posted

技术标签:

【中文标题】通过隐藏变量传递复杂的 json 并在 mvc 3 控制器中读取【英文标题】:Pass complex json via hidden variable and read in mvc 3 controller 【发布时间】:2012-10-08 03:45:14 【问题描述】:

我想做以下事情。

    在隐藏的输入变量中传递复杂的 json 对象 通过表单集合对象获取隐藏变量。 将隐藏的文本值转换为我可以循环访问的动态对象 从中获取数据

所以我认为上面的前两项我可以做到。

    $("#hiddenVariableID").val(JSON.stringify(data)); 在 MVC 控制器中有一个名为 FormCollection 集合的参数。 然后通过以下方式获取值 String data = collection.Get("hiddenVariableID"); ??不知道该怎么做。

我传递的数据是一个对象数组。对象永远不会相同,这就是为什么我需要将结果转换为某种类型的动态对象,我可以循环访问。

我无法执行 ajax 调用来执行此操作,因为我想流式传输隐藏变量中传递的数据。所以必须通过表单提交。

谢谢你, -Tesh

【问题讨论】:

【参考方案1】:

此时您可以使用一些 JSON 解析器在字符串和您可以动态访问的 JSON 对象之间进行转换。那里有许多 JSON 解析器,下面的代码显示了如何使用其中两个来完成:javascriptSerializer(.NET 框架的一部分)和JSON.NET(非 MS 库,但 IMO真的很好)。

public static void Test()

    string JSON = @"[
        'name':'Scooby Doo', 'age':10,
        'name':'Shaggy', 'age':18,
        'name':'Daphne', 'age':19,
        'name':'Fred', 'age':19,
        'name':'Velma', 'age':20
    ]".Replace('\'', '\"');

    Console.WriteLine("Using JavaScriptSerializer");
    JavaScriptSerializer jss = new JavaScriptSerializer();
    object[] o = jss.DeserializeObject(JSON) as object[];
    foreach (Dictionary<string, object> person in o)
    
        Console.WriteLine("0 - 1", person["name"], person["age"]);
    

    Console.WriteLine();
    Console.WriteLine("Using JSON.NET (Newtonsoft.Json) parser");
    JArray ja = JArray.Parse(JSON);
    foreach (var person in ja)
    
        Console.WriteLine("0 - 1", person["name"].ToObject<string>(), person["age"].ToObject<int>());
    

【讨论】:

以上是关于通过隐藏变量传递复杂的 json 并在 mvc 3 控制器中读取的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring Boot 在 Post 方法中传递 Json 数据?我想传递几个变量并在不同的 java 类中使用这些变量

json 没有通过 mvc 3 控制器上的 id

如何使用 JSON.NET 通过 ASP.NET MVC 传递 JSON 日期值? [复制]

FineUI MVC 前端获取表格Json通过Post传递后台

通过 GET 将 JSON 数组传递给 MVC Web API

通过隐藏字段传递 JSON 序列化数据