2017-03-09 36 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提供者而不是消费者。但感谢您发布它 –