2013-03-09 104 views
3

我有一個返回json結果的操作,但其中一些屬性爲空,我想將它們轉換爲空字符串。我聽說我可以使用DefaultValue(""),但它仍然返回null而不是空字符串。返回json結果並將null轉換爲空字符串

的操作是:

[HttpGet] 
public ActionResult GetResults(string date) 
{ 
    var data= GetData(); // returns List<Foo> 
    var json = Json(data, JsonRequestBehavior.AllowGet); 
    return json; 
} 

Foo類是:

public class Foo 
{ 
    public string Bar1; 

    [DefaultValue("")] 
    public int? Bar2; 
} 

回答

3

像@Dave注意到你不能將字符串值賦給int值。

但是有件事我想警告它,你有沒有正確設置屬性DefaultValueHandling?點擊此處查看:Removing Default Values in JSON with the MVC4 Web API

除此之外,我會推薦給你,你就代表這個BAR2 int屬性字符串屬性和你「忽略」它系列化,如:

[JsonIgnore] 
[DefaultValue(0)] 
public int? Bar2Int; 

public string Bar2 
{ 
    return { Bar2Int.HasValue ? this.Bar2Int.Value.ToString() : String.Empty; } 
} 

更妙的是與此方法你不需要任何默認值屬性。

+1

非常有趣的實現。我會學習並利用它。 – 2013-03-09 21:28:58

+1

@Dave A:Tnx!我希望你會覺得它有用。 – 2013-03-10 04:52:22

4

你不能設置一個nullable int爲默認的""

VAL嘗試

[DefaultValue(0)] 
public int? Bar2; 
相關問題