使用正则表达式进行ASP.NET Web API 2模型验证

时间:2014-09-10 16:34:14

标签: regex asp.net-web-api

在我的web api 2 Controller中,我有一个包含以下逻辑的Create方法:

if (((assignment.type).ToLower() != "individual" && (assignment.type).ToLower() != "staff")) {
  return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "The Assignment Type 
  must be either 'individual' or 'staff'");
  }

我正在使用模型状态验证。是否可以为属性分配正则表达式以消除在控制器中进行检查的需要?如果是这样的话,只有当api的用户传递“个人”或“职员”的确切字符串(不区分大小写)时,reg ex看起来才会返回有效的内容?

2 个答案:

答案 0 :(得分:3)

感谢评论中的一些指导,我最终得到了这个,这很有效:

[RegularExpression(@"^(?i)(individual|staff)$", ErrorMessage="...")]
public string type { get; set; }

答案 1 :(得分:0)

如果你想要一个正则表达式而不是像

那样的东西
new Regex(@"^(individual|staff)$", RegexOptions.IgnoreCase)

但是,我建议创建一个具有相应值的枚举,并使该枚举的模型属性。