Настраиваемое сообщение об ошибке при проверке модели ASP.NET Core MVC - PullRequest
0 голосов
/ 25 мая 2018

Я работаю с проектом ASP.NET Core MVC, в котором мы хотим установить для настраиваемого сообщения обязательное поле с именем поля вместо общего сообщения, предоставленного платформой.
Для этого я создал собственный класс, как показано ниже:

public class GenericRequired : ValidationAttribute
{
    public GenericRequired() : base(() => "{0} is required")
    {

    }

    public override bool IsValid(object value)
    {
        if (value == null)
        {
            return false;
        }
        string str = value as string;
        if (str != null)
        {
            return (str.Trim().Length != 0);
        }
        return true;
    }
}

И использование этого класса в модели.

[GenericRequired]
[DisplayName("Title")]        
public string Name { get; set; }

На странице просмотра:

<span asp-validation-for="Name" class="text-danger"></span>

Но сообщение не отображается или проверка не работает,Есть ли другой способ заставить его работать?

1 Ответ

0 голосов
/ 25 мая 2018

Ваша реализация GenericRequired работает только для проверки на стороне сервера .При создании подкласса ValidationAttribute вы получаете только серверную проверку из коробки.Для того, чтобы эта работа работала с проверкой на стороне клиента , вам необходимо реализовать IClientModelValidator и добавить валидатор jQuery (инструкции далее по ссылочной странице).

Как я и предлагал в комментариях, вы можете вместо этого просто создать подкласс RequiredAttribute, чтобы получить то, что вы хотите, например:

public class GenericRequired : RequiredAttribute
{
    public GenericRequired()
    {
        ErrorMessage = "{0} is required";
    }
}

Все, что вам нужно, это изменить ErrorMessage, оставив оба сервера-проверка на стороне и стороне клиента в такте, что намного проще для вашего варианта использования.

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