4

私はモデルを持っています:

public class Foo
{
    [Required]
    public string Bar1 { get; set; }

    public string Bar2 { get; set; }
}

ASP.NET MVC API で検証しています:

public HttpResponseMessage Post(Foo foo)
{
    if (ModelState.IsValid)
    {
        // Valid
    }
    else
    {
        // Invalid
    }
}

キーと値のペアを指定せずに ( myModelnull にする) POST を送信すると、マークされた ModelState が有効になります。どうしてこれなの?キーだけを指定すると、無効として正しくマークされBar2ます。

4

1 に答える 1

2

それは設計によるものです。モデルが null の場合、検証は実行されません。一方、モデルが null ではなく、Bar1プロパティが null または空の文字列の場合、検証エラーが発生します。

たとえば、次のペイロードで検証エラーが発生します。

{ "Bar2": "Bazinga" }

またはこれで:

{ "Bar1": null, "Bar2": "Bazinga" }

またはこれで:

{ "Bar1": "", "Bar2": "Bazinga" }
于 2013-08-14T14:45:36.880 に答える