2017-03-09 27 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,則&等 「要求名稱」。

是的,一個修修補補的辦法是: -

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

是的。一個大的Thanksssssssssss –

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提供者而不是消費者。但感謝您發佈它 –

相關問題