用于检查是否在一组值内的数据注释
Data annotation to check if within set of values
在使用数据注释属性验证 string
属性时,有谁知道验证字符串是一组可能值之一的方法,可能表示为数组或分隔字符串?
这个问题更通用,但我 运行 进入的特定实例是 属性 可以包含 HTTP 方法的子集;具体来说,GET
、POST
、PUT
、PATCH
和 DELETE
.
在 System.ComponentModel.DataAnnotations
命名空间中,我看到 RegularExpressionAttribute
我可以将其子类化并动态创建 RegEx,但想知道我是否遗漏了一些已经存在的东西。
答案不限于.NET 框架。第 3 方库甚至自定义代码都是可以接受的,但越接近标准(在这种情况下意味着被很好地采用)越好。
谢谢
您可以使用 Remote Validation 来达到这个目的:
[System.Web.Mvc.Remote("Check", "yourModel",
HttpMethod = "POST",
ErrorMessage = "Username is not available.")]
public string Name { set; get; }
并且:
public ActionResult Check(string name)
{
string[] names = {"name1", "name2", "name3"};//set of possible values
//validate the string is one of a set of possible values
if (names.Contains(name.ToLowerInvariant())) return Json(false);
//...
return Json(true);
}
您还可以使用 AdditionalFields
获取或设置验证所需的附加字段。 AdditionalFields
属性 是字符串 属性 可以为多个字段提供。
看起来继承 RegularExpressionAttribute
是要走的路线,或者像 Steven Muecke 在评论中所说的那样从头开始构建我自己的路线。
作为旁注,我最终出于其他原因进行了重构,不再需要注释。但当我 运行 遇到没有明显和直接解决方案的问题时,情况往往如此。
在我的代码中我这样使用:
[Required]
[RegularExpression("GET|POST|PUT|PATCH|DELETE", ErrorMessage = "Only http method allowed.")]
public string method { get; set; }
注意:如果将空字符串传递给 method
则不会显示错误消息,然后我使用 [Required]
标签。
在使用数据注释属性验证 string
属性时,有谁知道验证字符串是一组可能值之一的方法,可能表示为数组或分隔字符串?
这个问题更通用,但我 运行 进入的特定实例是 属性 可以包含 HTTP 方法的子集;具体来说,GET
、POST
、PUT
、PATCH
和 DELETE
.
在 System.ComponentModel.DataAnnotations
命名空间中,我看到 RegularExpressionAttribute
我可以将其子类化并动态创建 RegEx,但想知道我是否遗漏了一些已经存在的东西。
答案不限于.NET 框架。第 3 方库甚至自定义代码都是可以接受的,但越接近标准(在这种情况下意味着被很好地采用)越好。
谢谢
您可以使用 Remote Validation 来达到这个目的:
[System.Web.Mvc.Remote("Check", "yourModel",
HttpMethod = "POST",
ErrorMessage = "Username is not available.")]
public string Name { set; get; }
并且:
public ActionResult Check(string name)
{
string[] names = {"name1", "name2", "name3"};//set of possible values
//validate the string is one of a set of possible values
if (names.Contains(name.ToLowerInvariant())) return Json(false);
//...
return Json(true);
}
您还可以使用 AdditionalFields
获取或设置验证所需的附加字段。 AdditionalFields
属性 是字符串 属性 可以为多个字段提供。
看起来继承 RegularExpressionAttribute
是要走的路线,或者像 Steven Muecke 在评论中所说的那样从头开始构建我自己的路线。
作为旁注,我最终出于其他原因进行了重构,不再需要注释。但当我 运行 遇到没有明显和直接解决方案的问题时,情况往往如此。
在我的代码中我这样使用:
[Required]
[RegularExpression("GET|POST|PUT|PATCH|DELETE", ErrorMessage = "Only http method allowed.")]
public string method { get; set; }
注意:如果将空字符串传递给 method
则不会显示错误消息,然后我使用 [Required]
标签。