Использование пользовательских атрибутов проверки в ASP.NET MVC - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь создать собственный атрибут проверки, чтобы применить его. Я использовал учебник: http://ezzylearning.com/tutorial/creating-custom-validation-attribute-in-asp-net-mvc (не реализовывал проверку на стороне клиента. Все до раздела на стороне клиента). И метод IsValid никогда не вызывается. Все основные атрибуты [Обязательные] работают правильно, но пользовательский инициализируется только и игнорируется.

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public sealed class RequiredIfNotAttribute : ValidationAttribute
{
    private String PropertyName { get; set; }
    private Object InvalidValue { get; set; }

    static RequiredIfNotAttribute()
    {
        DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredIfNotAttribute), typeof(RequiredAttributeAdapter));
    }

    public RequiredIfNotAttribute(String propertyName, Object invalidValue)
    {
        PropertyName = propertyName;
        InvalidValue = invalidValue;
    }

    protected override ValidationResult IsValid(object value, ValidationContext context)
    {
        ValidationResult result1 = IsValid(value, context);
        result1.ErrorMessage = "TEST";
        return result1;
    }

    public override bool IsValid(object value)
    {
        return false;
    }
}

Модель использует атрибут.

 [Display(Name = "Xxxxx")]
 [RequiredIfNot("B", "")]
 public string A { get; set; } 

И пользовательский интерфейс выглядит как пример

<div>
     @Html.LabelFor(Model => Model.A)<br />
     @Html.EditorFor(Model => Model.A)<br />
     @Html.ValidationMessageFor(Model => Model.A)
</div>

Буду признателен за любую помощь.

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