3

json の結果を返すアクションがありますが、一部の属性が null であり、代わりにそれらを空の文字列に変換したいと考えています。を使用できると聞きましたが、空の文字列の代わりに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

nullable intのデフォルト値を設定することはできません""

試す

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

@Dave Aのように、文字列値をint値に割り当てることができないことに気付きました。

ただし、警告したかったことの1つは、プロパティを適切に設定しました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 に答える