2013-03-09 101 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; 
相关问题