Необязательная проверка с использованием аннотаций .net C # - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть свойство с обязательным полем валидатора (используются аннотации данных -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;
        }
    }

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...