我想验证 Web API REST 命令的输入。我希望它能像下面的 State
一样工作,并用限制参数有效值的属性进行装饰。
public class Item {
...
// I want State to only be one of "New", "Used", or "Unknown"
[Required]
[ValidValues({"New", "Used", "Unknown"})]
public string State { get; set; }
[Required]
public string Description { get; set; }
...
}
有没有一种方法可以在不违背 Web API 的原则的情况下做到这一点。理想情况下,该方法类似于 Ruby on Rails 的 custom validation .
最佳答案
创建一个派生自 ValidationAttribute
的自定义验证属性并覆盖 IsValid
成员函数。
public class ValidValuesAttribute: ValidationAttribute
{
string[] _args;
public ValidValuesAttribute(params string[] args)
{
_args = args;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (_args.Contains((string)value))
return ValidationResult.Success;
return new ValidationResult("Invalid value.");
}
}
然后你可以做
[ValidValues("New", "Used", "Unknown")]
以上代码未经编译或测试。
关于c# - Web API 自定义验证以根据批准的值列表检查字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17243665/