javascript - 如何将嵌套的 JavaScript 对象传递给 ASP.NET MVC 操作方法?

标签 javascript jquery asp.net-mvc

我想将嵌套的 JavaScript 对象传递给我的 ASP.NET MVC 操作方法。 这是代码(简化):

$.getJSON('some/url',
    {
        index: pageIndex,
        pageSize: pageSize,
        filter:{one:'one',two:'two',three:'three'}
    }, someCallBack(msg)
);

我正在使用 jQuery 并实现了我的插件,该插件延迟地从服务器获取分页数据。它很有用,但现在我需要传递一个带有可变数量的属性过滤器的 JavaScript Filter 对象。在服务器端,我得到一个对象数组,其中第一项是字符串,包含 [Object object] 文字。

显然,我的嵌套对象(filter)没有在服务器端扩展并转换为对象(hash)。这可能吗?我不想对我的过滤器进行硬编码,因为该插件旨在普遍应用。

非常感谢。

最佳答案

您可以使用System.Web.Script.Serialization.JavaScriptSerializer发送/接收JSON序列化数据:

JavaScriptSerializer js = new JavaScriptSerializer();
Filter f = js.Deserialize<Filter>(json_str);

更多详情here 。要对 JSON 数据进行编码以发送到服务器,请使用 JavaScript 的 JSON 序列化库,例如 json2.js 。然后发送如下查询:

var filter = {field1: 'value1', field2: 'value2'}

$.ajax({
 type: "POST",
 url: '/server/path',
 data: { filter: JSON2.stringify(filter) },
 dataType: "json",
 success: function(data) {
   // do something
 }
});

关于javascript - 如何将嵌套的 JavaScript 对象传递给 ASP.NET MVC 操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1164539/

相关文章:

javascript - 捕获所有的 <a> 点击事件

javascript - 当 status=false 时,alert(data.status) 失败,但当 status=true 时则不会失败

c# - 为什么可以不处理 UserStore

jquery - 当我更改下拉列表时如何在 asp.net mvc 中重新加载 jqgrid

javascript ->= 等于 > || === 或 > || == 在 JavaScript 中?

javascript - 在 Angular Controller 中重新渲染 ng-table

javascript - 即使我对值进行硬编码,includes()也会返回 false

javascript - 如何使 Topbar 扩展与最新的 MediaWiki 兼容?

javascript - 获取存储在隐藏输入中的对象数组

asp.net-mvc - 如何防止用户导航回上一页?