Вы можете попытаться написать атрибут проверки клиента, унаследованный от ValidationAttribute
и override
метода.
override ValidationResult IsValid(object value, ValidationContext validationContext)
Получение значения DecimalPlaceRequired
из экземпляра validationContext.ObjectInstance
.затем действителен Regex
.
public class CutomerAuthAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var model = validationContext.ObjectInstance as Result;
if (model != null)
{
string pattern = GetPattern(model);
if (Regex.IsMatch(value.ToString(), pattern))
{
return null;
}
}
return new ValidationResult("Please input correct float number");
}
private string GetPattern(Result model)
{
string pattern = "^[+]?[0-9]+";
if (model.DecimalPlaceRequired > 0)
pattern += "[.][0-9]{" + model.DecimalPlaceRequired + "}";
pattern += "$";
return pattern;
}
}
Добавить атрибут CutomerAuth
к свойству NumericResult
.
public class Result
{
[CutomerAuth]
public float NumericResult { get; set; }
public int DecimalPlaceRequired { get; set; }
}
Вот пример для вас
c # онлайн