![](/img/trans.png)
[英]C# Validate attribute inside property of custom data type (enum) of a nested class
[英]C# Unable to validate property using a custom validate attribute
我有一個驗證類:
public sealed class ValidationSet : ValidationAttribute
{
private List<string> _set = new List<string>();
public ValidationSet(params string[] setOfValues)
{
_set = setOfValues.ToList();
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (!(_set.Select(s => s.ToLower()).Contains(value.ToString().ToLower())))
{
throw new Exception("not in the set");
}
return ValidationResult.Success;
}
}
這是我的用法:
public class Car
{
[ValidationSet("honda", "gm")]
public string CarMake{ get; set; }
}
當我通過以下方式實例化Car類時:
...
Car c = new Car();
c.CarMake = "ford";
...
什么都不會發生,如果我打印c.CarMake,則顯示為福特-驗證未發生。
我只是想知道我在這里想念什么。
謝謝!
只需實例化該類並分配該字段就不會調用IsValid,您需要在檢查Car,看到CarMake上具有ValidationAttribute並調用IsValid的框架中使用該類。
在此示例中,asp:DynamicValidator正在執行工作:
我將研究FluentValidation。 您可以為Car創建一個驗證器類。
public class CarValidator : AbstractValidator<Car>
{
public CarValidator() {
RuleFor(m => m.CarMake).Equal("gm").Equal("honda");
}
}
用法:
var car = new Car { CarMake = "honda" };
var validator = new CarValidator();
if (validator.Validate(car).IsValid)
// car is valid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.