在从浏览器发送请求时无法绑定对象列表的属性

问题描述 投票:0回答:1

我正在使用asp.net mvc2并使用jQuery版本1.7的项目。我想将对象列表发送到服务器,并让活页夹完成将值分配给它们的属性的工作,但此刻我无法。

我的班级结构看起来像这样:

class Boo {
  public string Name {get; set;}
  public string Address {get; set;}
}

在浏览器中,我正在发送此AJAX请求:

$.ajax({
  type: "POST",
  url: url,
  data: {destinataries: [{Name: "aa", Address: "bb"},{Name:"cc"}]
});

但是在服务器上,我得到一个包含两个对象的列表,但它们的属性全为空,在进一步调查时,我发现jquery发送的请求看起来不正确:

Form Data:
destinataries[0][Name]: aa
destinataries[0][Address]: bb
destinataries[1][Name]: cc

使用邮递员时,如果我这样发送请求,便可以正确获取其属性

destinataries[0].Name: aa

仍然,我无法设置(或不知道如何)JQuery以这种方式发送请求……有没有办法做到这一点?我也尝试发送JSON,设置contentType并使用JSON.stringify,但是由于某种原因,我在服务器上得到了null。有任何想法吗?谢谢

c# jquery ajax asp.net-mvc-2
1个回答
0
投票

因此您有多种选择来解决此问题。我会为您提供处理此问题的方法。

[要将您在json格式上的数据“转换”为您需要反序列化的c#对象,我以这种方式使用NewtonSoft Jsonconvert:

Object result = JsonConvert.DeserializeObject<Object>(jsondata);

然后使用ajax可能不是一个坏主意,但我更喜欢与RestSharp一起使用,它可以对您将发送的请求进行更多的c#方式处理。例如:

        var client = new RestClient("http://192.168.x.x:3000");

        var request = new RestRequest(string.Format("/person"), DataFormat.Json);
        IRestResponse response = client.Get(request);

我不知道更改您当前正在使用的内容是否可行,但在C#中以这种方式执行似乎更为自然

如果需要更多文档,请询问或阅读此内容:

https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json.htm

http://restsharp.org/

祝你有美好的一天。

© www.soinside.com 2019 - 2024. All rights reserved.