3

それが可能かどうか、または Web API 呼び出しでパラメーターとして使用されるクラスのフィールドを必須にする方法を知りたいですか? メッセージを受け取ったら手動でこれを行うことができますが、パイプラインに何かが組み込まれていることを望んでいました (必要なフィールド注釈を使用して、必要なフィールド表記を示す UI に自動的にキックバックする jQuery と組み合わせた MVC など)。すべてを手動で確認する必要はありません。

次の ViewModel クラスがあるとします。

public class PersonViewModel
{
  public string FirstName {get; set;}

  public string MiddleName {get; set;}

  public string LastName {get; set;}

}

これが私の簡単なPostメソッドですPersonController

public HttpResponseMessage Post(PersonViewModel person)
{


}

FirstNameLastNameフィールドは必須ですが、必須ではない としましょうMiddleName。私が知りたいのは、Personオブジェクトに必須フィールドのいずれかが入力されていない場合、呼び出しは HTTP 400 Bad Request などでクライアントに自動的に応答することですか?

基本的に、このすべての作業を手動で行う必要がありますか、それとも、フレームワークが表記されたフィールドを自動的に処理するようにする方法があるので、必須フィールドの定型的な検証コードはあまりありませんか?

私が避けようとしている手動の方法:

if (ModelState.IsValid)
{
  if (person.LastName == string.empty)
  {
     return Request.CreateResponse(HttpStatusCode.BadRequest);
  }

}

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

6

WebAPI には検証機能があります。FirstName および LastName プロパティを [Required] としてマークし、このブログ投稿の下部にあるアクション フィルターを使用して、適切な応答を返すことができるはずです。

http://blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi.aspx

WebAPI 検証の詳細については、こちらをご覧ください。

http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api

于 2013-01-29T17:09:08.533 に答える