3

我有一个返回 json 结果的操作,但某些属性为空,我想将它们转换为空字符串。我听说我可以使用DefaultValue(""),但它仍然返回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;
}
4

2 回答 2

4

您不能将 a 设置nullable int为默认值""

尝试

[DefaultValue(0)]
public int? Bar2;
于 2013-03-09T08:44:42.760 回答
3

就像@Dave A 注意到你不能将字符串值分配给 int 值。

但是我想警告它的一件事,您是否正确设置了属性DefaultValueHandling?在此处检查:使用 MVC4 Web API 删除 JSON 中的默认值

除此之外,我建议您执行一个表示此 Bar2 int 属性的字符串属性,然后“忽略”它以进行序列化,例如:

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

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

使用这种方法更好,您不需要任何默认值属性。

于 2013-03-09T08:54:35.027 回答