在我離開並重新創建輪子之前,有誰能告訴我是否有辦法自動執行此操作嗎?我有包含另一個對象類型的陣列的視圖模型,有點像這樣:序列化表單傳遞給ASP.Net Web API
public class ParentViewModel {
public int ID { get; set; }
public string Title { get; set; }
public ChildViewModel[] Children { get; set; }
}
public class ChildViewModel {
public string Description { get; set; }
public int Severity { get; set; }
}
我打電話的web API函數採用一個ParentViewModel作爲參數:
[HttpPost]
public void Test([FromBody]ParentViewModel vm) {
}
這從可以具有動態數量的子實體的網頁調用。該頁面使用asp.net/Razor創建的,所以這些必然要輸入字段與HTML這樣的:
<input aria-invalid="false" class="form-control" id="Children_0__Description" name="Children[0].Description" value="test" type="text">
我有一個使用AJAX來調用Web API,JavaScript事件處理程序。我想將表單數據傳遞給它,所以我將表單序列化,使用deparam將其轉換爲對象,然後在對象上調用JSON.stringify。不幸的是,這並沒有將「Children [0] .Description」這樣的東西變成我的一個對象數組,所以當它碰到web api時,它不會被映射到視圖模型的數組屬性上,也就是說,我的JSON的外觀像這樣:
{
"ID": "12",
"Children[0].Severity" : "3",
"Children[0].Description" : "Test",
"Children[1].Severity" : "5",
"Children[1].Description" : "Another",
"Title": "Hello"
}
,而不是像這樣:
{
"ID": "12",
"Children" : [
{"Severity":"3", "Description":"Test"},
{"Severity":"5", "Description":"Another"},
],
"Title": "Hello"
}
我正要寫一些代碼來改造JSON,但我猜我現在不是做錯事擺在首位,或者已經有東西會爲我做這件事 - 任何建議?
謝謝Shashank。聽起來很相似,但在我的情況下,我已經有了contentType屬性 –