2012-02-20 70 views
1

我有以下方法:避免返回空值在JSON用於AJAX調用

[HttpPost] 
[AjaxOnly] 
public JsonResult ValidateInput(string text) 
{ 
    return new EmptyJsonResult(); 
} 

/// <summary> 
/// returns a JSON result that is marked as being empty. 
/// </summary> 
public sealed class EmptyJsonResult : JsonResult 
{ 
    public EmptyJsonResult() 
    { 
     Data = new JsonResultData 
     { 
      Empty = true 
     }; 
    } 
} 

public class JsonResultData 
{ 
    public bool Empty { get; set; } 
    public string[] Errors { get; set; } 
} 

我想到這回{"Empty":true}到瀏覽器,但它返回{"Empty":true,"Errors":null}代替。

是否有任何屬性或我可以設置的東西,以避免在我沒有填充的對象上返回空值?

+0

你想填充什麼值?你總是可以爲每個對象編寫自己的getter,但是null是可以的 – alexsuslin 2012-02-20 16:07:10

+0

也許你應該看看源代碼,看看你是否可以改變一些東西..這是一個SO問題,圍繞該領域進行了探討:http:// stackoverflow .com/questions/8833961/serializing-null-in-json-net – Baz1nga 2012-02-20 16:18:32

+0

如何在這裏實現'NullValueHandling.Ignore'? – bevacqua 2012-02-20 16:21:33

回答

1

如果你只是返回一個匿名對象,它對你有什麼影響嗎?

public EmptyJsonResult() 
    { 
    Data = new 
     { 
      Empty = true 
     }; 
    } 
+0

不是,這是我所做的。 – bevacqua 2012-02-20 16:17:00

0

我沒有看到返回null的問題,但是如果您需要實現您的目標,請有一個名爲JsonResultData的接口和兩個實現它的類。一個具有你需要返回的所有屬性,而第二個屬性只有Empty。