[英]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
祝你今天過得愉快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.