【问题标题】:Post an array of complex objects with JSON, JQuery to ASP.NET MVC Controller将带有 JSON、JQuery 的复杂对象数组发布到 ASP.NET MVC 控制器
【发布时间】:2009-04-17 12:40:20
【问题描述】:

我知道这个问题之前已经提到过,例如这里:

How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?

但解决方案似乎不适合我的问题。

这是我的 HTML。行数可变:

 <table id="workPlanTable">
    <tr>
        <th>
            Begin
        </th>
        <th>
            End
        </th>
    </tr>

    <tr itemId="1">
        <td><input class="begin" id="begin_1" name="begin_1" type="text" value="5:30" /></td>
        <td><input class="end" id="end_1" name="end_1" type="text" value="11:30" /></td>
    </tr>
    <tr itemId="3">
        <td><input class="begin" id="begin_3" name="begin_3" type="text" value="5:30" /></td>
        <td><input class="end" id="end_3" name="end_3" type="text" value="7:30" /></td>
    </tr>

</table>

JS 构建一个对象数组并将它们发送到一个控制方法:

<script type="text/javascript">
$(function() {

  submitForm = function() {
    var items = new Array();
    $("#workPlanTable tr").each(function(i) {
      var end = $(this).find(".end").val();
      var begin = $(this).find(".begin").val();
      var item = {
        "Begin": begin,
        "End": end
      };
      items.push(item);

    });
    var postData = {
      myItems: items
    };

    $.ajax({
      url: '~/WorkPlan/AjaxUpdate',
      type: 'POST',
      dataType: 'json',
      data: postData,
      contentType: 'application/json; charset=utf-8',
      success: function(result) {
        alert(result.Result);
      }
    });
  }
})
</script>

每一行代表一个 WorkPlanItem。

我的目标是将它们全部发布到我的控制器以更新它们。

我似乎无法弄清楚如何在我的控制器方法 (AjaxUpdate) 中访问该数组。

【问题讨论】:

    标签: asp.net-mvc json jquery


    【解决方案1】:

    您可以将表单序列化为Vikas posted,或者您可以使用stringify function,如果您希望浏览页面(就像您目前所做的那样)并使用postData 数组。

    在控制器上,您需要处理 json 字符串。您可以使用 System.Web.Script.Serialization.JavaScriptSerializer class 对其进行反序列化。如果您有一个映射到您传递的数据的对象,您可以使用Deserialize 方法。如果你不这样做,你仍然可以使用DeserializeObject,但是这会给你一个Dictionary&lt;string, string&gt; 集合,你必须通过它来获取你的数据。不是很有趣(相信我),但它确实有效。

    【讨论】:

    • 感谢您的精彩回答。我最终使用了 stringify 函数 + JavaScriptSerializer
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2014-10-20
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多