Как установить одно и то же сообщение об ошибке для всех необходимых атрибутов проверки? - PullRequest
0 голосов
/ 12 июня 2019

Я новичок в .net core. Следующий код изменяет все необходимые сообщения проверки на «Это поле обязательно для заполнения» для платформы asp.net.

 public class CustomRequiredAttribute:RequiredAttribute, IClientValidatable
    {

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

        public override string FormatErrorMessage(string name)
        {
            return base.FormatErrorMessage(name); // expandable to format given message later
        }

        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            return new[] { new ModelClientValidationRule { ErrorMessage = "This field is required", ValidationType = "required" } };
        }
    }

Как вы делаете то же самое для .net core?

 public class CustomRequiredAttribute:RequiredAttribute
    { 
      //set required field message to : This field is requried.
    }

1 Ответ

1 голос
/ 13 июня 2019

По вашему требованию вы можете реализовать RequiredAttribute, IClientModelValidator как

public class DefaultRequiredAttribute: RequiredAttribute, IClientModelValidator
{
    public DefaultRequiredAttribute()
    {
        ErrorMessage = "This field is required";
    }

    public void AddValidation(ClientModelValidationContext context)
    {
        MergeAttribute(context.Attributes, "data-val", "true");
        MergeAttribute(context.Attributes, "data-val-required", ErrorMessage);
    }
    private bool MergeAttribute(IDictionary<string, string> attributes, string key, string value)
    {
        if (attributes.ContainsKey(key))
        {
            return false;
        }

        attributes.Add(key, value);
        return true;
    }
}

и использовать как

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    [DefaultRequired]
    public string UserImage { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...