2017-03-09 1 views
0

私はWebAPIベースのプロジェクトを持っています。ユーザー登録のためのAPIを備えています。 RegistrationModelは以下のようになります。特定のエラーメッセージを返す方法

public class RegistrationTO 
{ 

    [Required(ErrorMessage="Email required")] 
    public string Email { get; set; } 

    [Required(ErrorMessage="Name required")] 
    public string Name { get; set; } 

    [Required(ErrorMessage="Surname required")] 
    public string Surname { get; set; } 

} 

API

public string Post([FromBody]RegistrationTO model) 
    { 
     if (ModelState.IsValid) 
     { 
      //actual stuff 
     } 
     else 
     { 
      return "all * marked fields are required"; 
     } 
    } 

私の要件モデルがnullとして電子メールを持っている場合は、私がメッセージ "必要なメールを" 返すべきで名前がnullの場合、そのように上&を "名前が必要"。

はい、1斑状の方法は次のようになります -

public string Post([FromBody]UserRegistrationTO model) 
    { 
     if (ModelState.IsValid) 
     { 
      //actual stuff 
     } 
     else 
     { 
      if(model.Email == null) 
      return "Email required"; 
      else if(model.Name == null) 
      return "name required"; // & so on. 
     } 
    } 

これを行うには、他の簡単な方法はあります?

+1

私は、これはあなたが望むものをオフにカバー思う:https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api –

+0

@DaveBecker、ありがとうございました。それは便利ですが、私の要求に応えていませんでした。エドニーのポストは本当に私の要求に応えます。 –

答えて

1

はそれをしてみてください。

 if (ModelState.IsValid) 
     { 
      // do something 
     } 
     else 
      return "The following errors happen: \n" + 
      ModelState.SelectMany(s => s.Value.Errors) 
      .Select(s => s.ErrorMessage) 
      .Aggregate((seed, currentValue) => seed += "\n" + currentValue); 

私はそれはあなたを助けることができると思います。

+0

はい。大きなThankssssssssssss –

0

これはビュー自体で行うことができます。個々のプロパティについては

@Html.ValidationMessageFor(x => x.Email, null, new { @class = "text-danger" }) 

とすべてのためには、検証失敗

@if (!ViewData.ModelState.IsValid) 
{ 
    <div class="alert alert-danger"> 
    @Html.ValidationSummary(false) 
    </div> 
} 
+0

私は消費者ではないAPIプロバイダです。しかし、投稿していただきありがとうございます –

関連する問題