我有一個控制器動作,它接收一個整數和一個對象,其中包含各種屬性,其中之一是對象的通用列表。當我將JSON發佈到帶有填充列表的操作時,所有內容都正確映射,並且我得到一個包含我發佈的對象的列表。如果該數組爲空,則MVC操作將該屬性綁定到空列表的空intead。我想讓空數組映射到一個空數組而不是空數組,因爲在這種情況下,空數組意味着集合中沒有任何內容,並且null表示應該檢查數據庫以查看以前是否有任何內容保存在集合中,但我無法弄清楚我需要更改以使其正確映射。我們使用Json.Net來爲返回對象做對象序列化,但我不認爲它被用於模型綁定上的對象反序列化。被傳遞Json空數組反序列化爲MVC中的空值
對象:
public class ObjectInList
{
public decimal Value1 { get; set; }
public decimal Value2 { get; set; }
}
public class Criteria
{
public decimal? ANullableNumber { get; set; }
public IList<ObjectInList> ObjectsList { get; set; }
}
JSON請求: 「{\」 ID \ 「:137,\」 標準\ 「:{\」 ObjectsList \ 「:[]}}」
控制器動作:
public ActionResult ProcessCriteria(int id, Criteria criteria)
{
return Json(_service.ProcessCriteria(id, criteria));
}
正是在這我得到一個空值而不是空列表中的標準對象的控制作用。是否發送其他屬性的空值會發生。不確定它是否屬於IList而不是IEnumerable? (包裝服務調用的Json方法是我們的包裝,它使用Json.Net返回一個json結果來對響應進行序列化 - null在收到的標準對象中,而不是在返回中。)
我猜這是某種東西很簡單,我錯過了,但我無法解決什麼,任何幫助非常感謝。
如果你放一些代碼對我們來說更容易。一行代碼優於100個單詞:D –
同意,但是在這種情況下,我不確定它會提供多大幫助,但是沒有發佈我的整個控制器/基本控制器和相關的json帖子。我會嘗試發佈一些有意義的東西,但在此之前,json顯示一個空數組,並且在它被髮布之前以及綁定到模型之前,List是一個空而不是空列表。控制器層次結構的一部分是由其他開發人員編寫的,所以我不能肯定地說,但我找不到json反序列化的重載實現,所以我認爲這是json模型綁定的默認處理。 –
檢查這個問題:http://stackoverflow.com/q/14203150/29555和第二個答案 – marto