2

MVCコントローラーを使用すると、キーのプロパティ名を取得します。WebApiコントローラーを使用する場合、キーの名前として「parameterName.property」を取得します。

public class SomeClass
{
    [StringLength(12, MinimumLength = 12)]
    public string Blah { get; set; }
}

MVCコントローラー内

[HttpPost]
public ActionResult Create(SomeClass collection)
{
    // ModelState.Keys.ElementAt(0) == "Blah"
}

WebApiController内(「blah = 1」などのリクエスト本文を渡す)

public HttpResponseMessage Post(SomeClass someClass1)
{
    // ModelState.Keys.ElementAt(0) == "someClass1.Blah"
}

したがって、MVCと一致する「Blah」を取得する代わりに、「someClass1.blah」を取得します。なぜこの矛盾があるのですか?足りない設定はありますか?これはRCのバグですか?どちらのプロジェクトも、VS2012RCでゼロから作成されました。

4

2 に答える 2

0

それは私にはRCコードのバグのように見えます。ただし、WebAPIのモデルバインディングはASP.NETMVCモデルバインディングとは別のものであるため、カスタムMVCモデルバインディングコードを追加した場合、WebAPIコントローラーには適用されません。この優れたブログ投稿には、WebAPIとMVCモデルのバインディングの違いに関するいくつかの優れた情報があります。

于 2012-06-18T16:05:22.427 に答える
0

これは実際には仕様によるものです。詳細については、こちらこちらをご覧ください。

于 2012-12-26T20:43:50.037 に答える