繁体   English   中英

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

[英]How to pass a nested JavaScript object to ASP.NET MVC Action Method?

我想将嵌套的 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);

更多细节在这里 要对 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
 }
});

JSON将是完美的选择。 基本上,您需要将对象转换为它的 JSON 表示形式,然后通过网络发送它。 一旦它在服务器上可用,您就可以随心所欲地处理它。

Crockford 有一篇关于 JSON 是什么、如何理解符号的好文章,他提供了一个工具来将您的对象转换为 JSON 符号。

您可以使用以下 js lib json2 库,然后可以使用 stringify 方法来确保您的 json 格式正确以用于服务。

var data0 = {one:'one',two:'two',three:'three'}

var json = JSON2.stringify(data0 ); 

$.ajax({
 type: "POST",
 url: someServiceUrl,
 data: json,
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {

 }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM