У меня есть два свойства модели для моей формы, Max и Min, которые отвечают за любое значение Max или Min в моей форме, которое я проверяю, чтобы убедиться, что они являются десятичными и присутствуют, также я проверяю диапазон
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
[MaxMinRange("Allowed range (0-100)")]
public string Minimum { get; set; }
[Required]
[RegularExpression("^\\d+(.\\d+){0,1}$", ErrorMessage = "Invalid Value")]
[MaxMinRange("Allowed range (0-100)")]
public string Maximum { get; set; }
Вот мой пользовательский валидатор для диапазона
public class MaxMinRangeAttribute : ValidationAttribute
{
private String ErrorMessage { get; set; }
public MaxMinRangeAttribute(String errormessage)
{
this.ErrorMessage = errormessage;
}
protected override ValidationResult IsValid(object value, ValidationContext context)
{
if (value != null)
{
double maxmin;
bool isDouble = Double.TryParse(value.ToString(), out maxmin);
if (isDouble && Convert.ToDouble(value.ToString()) > 100)
{
return new ValidationResult(ErrorMessage);
}
}
return ValidationResult.Success;
}
}
Однако свойства модели Max и Min на моей странице View / cshtml представлены различными родительскими классами, такими как процентное содержание химического состава или миллиметры
(процент химического состава)
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ChemicalComposition[20].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ChemicalComposition[20].Value.Minimum" class="alert-danger"></span>
</td>
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ChemicalComposition[21].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ChemicalComposition[21].Value.Minimum" class="alert-danger"></span>
</td>
миллиметры
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ProductDimensions[0].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ProductDimensions[0].Value.Minimum" class="alert-danger"></span>
</td>
<td>
<input type="text" class="form-control" asp-for="BIS232Request.JSONData.ProductDimensions[1].Value.Minimum" />
<span asp-validation-for="BIS232Request.JSONData.ProductDimensions[1].Value.Minimum" class="alert-danger"></span>
</td>
Проценты, очевидно, не должны превышать 100; однако миллиметры могут быть
У меня вопрос, как я могу по-разному проверять одни и те же свойства модели на основе родительского класса, дополнительных свойств или, возможно, некоторых дополнительных параметров?
Как я могу проверить Макс / Мин для процентов, не превышающих 100, но не обращая внимания на эту проверку для Макс / Мин миллиметров?
Большое спасибо за помощь