У меня есть свойство с обязательным полем валидатора (используются аннотации данных -C #), и есть два экрана, на которых у меня есть кнопки отправки. Я хочу, чтобы только один из моих экранов проверял это свойство. Есть ли способ достичь этого?
Я попробовал следующий код, но недостатком является то, что я должен установить обязательное значение динамически.
public class OptionalRequiredAttribute : ValidationAttribute, IClientValidatable
{
bool Mandatory = true;
public OptionalRequiredAttribute(string errorMessage, bool? mandatory)
{
this.ErrorMessage = errorMessage;
this.Mandatory = (mandatory != null) ? Convert.ToBoolean(mandatory) : true;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule();
rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
rule.ValidationType = "optionalrequired";
yield return rule;
}
public override bool IsValid(object value)
{
string propVal = (value == null) ? string.Empty : value.ToString();
if (Mandatory)
{
if (!string.IsNullOrWhiteSpace(propVal))
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
}
}