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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在从浏览器发送请求时无法绑定对象列表的属性相关的知识,希望对你有一定的参考价值。

我正在使用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。有任何想法吗?谢谢

答案

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

[要将您在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/

祝你有美好的一天。

以上是关于在从浏览器发送请求时无法绑定对象列表的属性的主要内容,如果未能解决你的问题,请参考以下文章

vue 模板绑定方法时导致浏览器循环发送请求

将 [FromQuery] 与复杂对象一起使用

从下拉列表中选择数据时,从 MYSQL 数据库中设置输入字段值属性

模型绑定与验证笔记

如何在从 jquery 发送 $.get 请求时启用 CORS?

从类对象列表中选择时设置属性值