簡體   English   中英

從瀏覽器發送請求時無法綁定對象列表中的屬性

[英]Unable to bind properties from a list of objects while sending a request from the browser

我正在研究 asp.net mvc2 和 jquery 1.7 版的項目。 我想向服務器發送一個對象列表,並讓綁定器完成為它們的屬性分配值的工作,但目前我無法做到。

我的 class 結構如下所示:

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"}]
});

但是在服務器上,我得到一個包含兩個對象的列表,但它們的屬性都是 null,在進一步調查時我注意到請求 jquery 發送看起來錯誤:

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

使用 Postman 時,如果我發送這樣的請求,我可以正確獲取它們的屬性

destinataries[0].Name: aa

不過,我無法設置(或不知道如何) JQuery 以這種方式發送請求......有沒有辦法做到這一點? 我也嘗試過發送 JSON,設置 contentType 並使用 JSON.stringify,但由於某種原因,我在服務器上得到了 null。 有任何想法嗎? 謝謝

所以你有多種選擇來解決這個問題。 我會給你我處理這個問題的方法。

要將 json 上的數據“轉換”為 c# Object,您只需要將其反序列化,我使用 NewtonSoft Jsonconvert 這種方式:

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

然后使用 ajax 可能不是一個壞主意,但我更喜歡使用 RestSharp,它允許您發送的請求更接近 c#-ish。 例如:

        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/

祝你今天過得愉快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM