0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 9
1

jquery не валидирует модель IValidatableObject

22.06.2020, 08:55. Показов 1752. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, пытаюсь настроить валидацию, если на модель повесить атрибуты, то валидация работает, а самовалидация через метод интерфейса - нет.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Person : IValidatableObject
    {
        public string Name { get; set; }
 
        public string Email { get; set; }
 
        public string Password { get; set; }
 
        public int Age { get; set; }
 
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            List<ValidationResult> errors = new List<ValidationResult>();
 
            if (string.IsNullOrWhiteSpace(this.Name))
            {
                errors.Add(new ValidationResult("Введите имя!", new List<string>() { "Name" }));
            }
            if (string.IsNullOrWhiteSpace(this.Email))
            {
                errors.Add(new ValidationResult("Введите электронный адрес!"));
            }
            if (this.Age < 0 || this.Age > 120)
            {
                errors.Add(new ValidationResult("Недопустимый возраст!"));
            }
 
            return errors;
        }
    }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@{
    Layout = null;
}
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using WebApplication1
@model Person
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="~/jquery/dist/jquery.min.js"></script>
    <script src="~/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
</head>
<body>
 
    <form asp-antiforgery="true" asp-action="Create" asp-controller="Home">
        <div>
            <div class="validation" asp-validation-summary="All"></div>
            <div>
                <label asp-for="Name"></label><br />
                <input type="text" asp-for="Name" />
                <span asp-validation-for="Name"></span>
            </div>
            <div>
                <label asp-for="Email"></label><br />
                <input asp-for="Email" />
                <span asp-validation-for="Email"></span>
            </div>
            <div>
                <label asp-for="Password"></label><br />
                <input asp-for="Password" />
                <span asp-validation-for="Password"></span>
            </div>
            <div>
                <label asp-for="Age"></label><br />
                <input asp-for="Age" />
                <span asp-validation-for="Age"></span>
            </div>
            <div>
                <input type="submit" value="Save" />
            </div>
        </div>
    </form>
</body>
</html>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2020, 08:55
Ответы с готовыми решениями:

Требуется PHP-программист, знающий JQuery и MVC-модель.
Требуется PHP-программист, знающий JQuery и MVC-модель. Требуется поддержка сложного проекта и...

Первые шаги в JQuery (хочу добавить переменную в код JQuery)
Здравствуйте. Захотел сделать галерею на сайте и чтобы при нажатии на кнопу показывало случайную...

Установка стиля используя jQuery для ошибок , которые генерирует jquery validate
Стиль для ошибок, которые генерируются с помощью библиотеки jquery validate можно оформить через...

Можно ли тултип сделать на jQuery для WinForms приложения и как вызвать скрипт jQuery
Здравствуйте! Есть тестовый редактор (Winforms c#).Как сделать, чтобы при подводе курсора на слово...

4
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 9
22.06.2020, 23:34  [ТС] 2
По поводу аттрибутов, работают только стандартные по типу required, range, а если писать свои то тоже не валидируются на клиенте
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
23.06.2020, 19:38 3
Лучший ответ Сообщение было отмечено nicolas2008 как решение

Решение

nakklevaar, не понятно с чего вы решили, что JQuery должен валидировать используя вашу серверную логику, и, главное, как вы себе это представляете.
Все ваши C# Required/Range/Regex атрибуты лишь преобразовываются Razor-движком в HTML-атрибуты и валидируются браузером при отправке формы. Никакой другой магии там нет.
1
0 / 0 / 0
Регистрация: 10.12.2019
Сообщений: 9
25.06.2020, 02:25  [ТС] 4
Cupko Да уже разобрался, единсвтенное что, IValidatableObject реализует инферфейс, метод которого вызовется перед генерацией html, куда передается ClientModelValidationContext и при помощи него можно повесить html-аттрибуты
C#
1
2
3
4
5
public void AddValidation(ClientModelValidationContext context)
        {
            MergeAttribute(context.Attributes, "data-val", "true");
            MergeAttribute(context.Attributes, "data-val-cannotbered", errorMessage);
        }
А как повесить не валидационный кастомный аттрибут, какой-нибудь nonwritable, который вещает html-класс disabled на input, что бы это было не в этом методе в контексте валидации, к ней же отношение не имеет. Может знаете
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
26.06.2020, 23:36 5
input type hidden ?
0
26.06.2020, 23:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2020, 23:36
Помогаю со студенческими работами здесь

Как заставить двигатся по ландшафту модель (модель и ландшафт формата .fbx)
Доброго времени суток. Уделите минутку. Извините, что отнимаю ваше время, но есть один вопрос,...

Как описать модель данных, если модель построена в режиме database first?
Например: public class PersonFindExtended { public string FAM {...

Программа на C++, которая переводит цветовую модель RGB в модель HSV
Всем привет! Я - начинающий программист. Мне нужна ваша помощь. Мне нужно сделать программу на C++,...

Backbone.js Какой должна быть модель? Как наполнять модель?
Добрый день! Есть небольшой проект, в котором используется backbone.js. С бекэнда приходит JSON с...

Постройте инфологическую модель предметной области, дамалогическую модель реляционной базы данных
Постройте инфологическую модель предметной области, дамалогическую модель реляционной базы данных,...

Где скачать jquery.validate.js и jquery.form.js?
Добрый вечер! Я в программировании совсем новичек подскажите,по возможности, где можно скачать 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru