当前位置: 移动技术网 > IT编程>开发语言>.net > .Net Web Api中利用FluentValidate进行参数验证的方法

.Net Web Api中利用FluentValidate进行参数验证的方法

2018年08月08日  | 移动技术网IT编程  | 我要评论

穿越古代之笑脸特务,即使只有回忆 ann,郴州在线

前言

本文主要介绍了关于.net web api用fluentvalidate参数验证的相关内容,下面话不多说了,来一起看看详细的介绍吧。

方法如下

安装fluentvalidate

在asp.net web api中请安装 fluentvalidation.webapi版本

创建一个需要验证的model

 public class product 
 {
  public string name { get; set; }
  public string des { get; set; }
  public string place { get; set; }
 }

配置fluentvalidation,需要继承abstractvalidator类,并添加对应的验证规则

 public class productvalidator : abstractvalidator<product>
 {
  public productvalidator()
  {
   rulefor(product => product.name).notnull().notempty();//name 字段不能为null,也不能为空字符串
  }
 }

在config中配置 fluentvalidation

在 webapiconfig配置文件中添加

public static class webapiconfig
{
 public static void register(httpconfiguration config)
 {
  // web api routes
  ...
  fluentvalidationmodelvalidatorprovider.configure(config);
 }
}

验证参数

需要在进入controller之前进行验证,如果有错误就返回,不再进入controller,需要使用 actionfilterattribute

public class validatemodelstatefilter : actionfilterattribute
{
 public override void onactionexecuting(httpactioncontext actioncontext)
 {
  if (!actioncontext.modelstate.isvalid)
  {
   actioncontext.response = actioncontext.request.createerrorresponse(httpstatuscode.badrequest, actioncontext.modelstate);
  }
 }
}

如果要让这个过滤器对所有的controller都起作用,请在webapiconfig中注册

public static class webapiconfig
{
 public static void register(httpconfiguration config)
 {
  // web api configuration and services
  config.filters.add(new validatemodelstatefilter());

  // web api routes
  ...

fluentvalidationmodelvalidatorprovider.configure(config);
 }
}

如果指对某一个controller起作用,可以在controller注册

[validatemodelstatefilter]
public class productcontroller : apicontroller
{
 //具体的逻辑
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网