powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему не работает клиентская валидация (ASP.NET MVC)?
16 сообщений из 16, страница 1 из 1
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39685760
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Не работает и именно в следующей комбинации.
1. Форма прибайндена к модели

Код: html
1.
@model SSCWeb.MobileServiceReference.EmployeeAvailMobileDTO



2. ДТО класс содержит обьявление

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[EmailAddress(ErrorMessage = "Invalid Email Address")]
        public string CommentValidated
        {
            get { return Comment; }
            set
            {
                Comment = value;
            }
        }


3. Во вью все это как-то так

Код: html
1.
2.
@Html.TextAreaFor(model => model.CommentValidated, htmlAttributes: new { @class = "form-control", style = "width: 100%; max-width: 100%;" })
@Html.ValidationMessageFor(model => model.CommentValidated, "", new { @class = "text-danger" })



Валидации не происходит. Сообщения об ошибке на экране не видно. Все, что ввел в поле, идет на сервер с веселым хохотом.
Почему не работает?
Спасибо.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39685854
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov,
В контроллере на POST методе проверяйте поля. У меня валидация работает вот таким образом:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[HttpPost]
public ActionResult CreateEr(ModelAddEr MAddEr) {
if (string.IsNullOrEmpty(MAddEr.InvNumber)) {ModelState.AddModelError("InvNumber","Это поле обязательно для заполнения");};
// далее можно описать другие проверки
// проверяем на валидацию
if (ModelState.IsValid) {
// Работа с БД
}
else
{return View(MAddEr);};

}
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39685865
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13В контроллереавтор вроде бы спрашивает про валидацию на клиенте...
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39685868
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, ну я еще сам не силен особо. Просто предложил свой вариант валидации))) может ТСу подойдет
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39685880
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13свой вариантВалидация на клиенте не отменяет валидацию на сервере, так что это не вариант, а обязательное условие. Но автору нужна подсветочка на клиенте, это требует правильного подключения JS-библиотек и т.п., кстати, вопрос автору, а что-нить более простое типа ограничение длины текстового поля (не ареи) работает? И какая версия MVC?
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39685885
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov,

Скрипты какие подключаете?
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686197
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Нет, ни один валидатор не работает.
Версия MVC 5, но это не имеет значения - другие экраны работают нормально.
Особенность этого экрана - он прибайндивается к расширению ДТО класса. Постараюсь объяснить.
Модель в основном состоит из ДТО классов, полученных от WCF сервисов через MEF. Естественно, это плоские классы без всяких аттрибутов для DataAnnotation.
Я прикручиваю к члену класса атрибут, но он не прикручивается - нельзя оверрайдить скажем свойство int не задав предикат new, правильно? (Вот тут хорошо бы если б кто сказал "не правильно" и обьяснил, это бы изменило мой подход).
Я определяю паршиал класс и там дополняю член Comment, пришедший от WCF, новым обьявлением CommentValidated и к последнему уже прикручиваю аттрибут DataAnnotation. Затем его и байндю. Все как в моем примере выше.

Вот эти член класса CommentValidated не валидируются. Остальные, заданные прямо в Модел, работают, но они не приходят от WCF и не представляют интереса.
Как-то так.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686207
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov,
К сервисным классам может и не будет работать.
Там же классы по сериализации. Приходят из сервиса. Они не твои. Их генератор делает.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686212
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RenziglovЯ определяю паршиал класс и там дополняю член Comment, пришедший от WCF, новым обьявлением CommentValidated и к последнему уже прикручиваю аттрибут DataAnnotation. Затем его и байндю. Все как в моем примере выше.Я не очень понимаю этот пассаж. Как можно дополнить одно свойство другим свойством? Лучше бы пример кода.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686225
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Вот класс, который приходит от сервиса:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public partial class EmployeeAvailMobileDTO : SSCWeb.MobileServiceReference.IDTBaseDTO {
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private string CommentField;
	[System.Runtime.Serialization.DataMemberAttribute()]
        public string Comment 
        {
            get { return this.CommentField; }
            set {
                if ((object.ReferenceEquals(this.CommentField, value) != true)) {
                    this.CommentField = value;
                    this.RaisePropertyChanged("Comment");
                }
         }
}



Что я должен делать? Модифицировать его для Дата Аннотэйшн:
Код: c#
1.
2.
3.
[RegularExpression(RegexConstants.JSInjection, ErrorMessage = nameof(TextResources.Strings.InjectionWarning))]
public string Comment
...



Но этого делать нельзя - при очередном апдейте все мои модификации исчезнут.
Какой выход? Обьявить в проекте расширение этого класса (паршиал, в том же неймспейсе).
Обьявил с полем Comment и готов добавить аттрибут, но! Поле коммент уже есть. Но пасаран.
Обьявляю поле CommentValidated, как я писал в самом начале. Все ничтяк, но валидация против этого поля не работает.
Надеюсь, я понятно изложил.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686243
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov,
Т.к. wcf не дружит с ef, то писать репозитарий интерфейс
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686326
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RenziglovОбьявляю поле CommentValidated, как я писал в самом начале. Все ничтяк, но валидация против этого поля не работает.
Надеюсь, я понятно изложил.Нет, непонятно.
У вас есть класс. В нем есть свойство CommentValidated с нужным атрибутом. Все остальные свойства (например Comment) и само происхождение класса (MVC без разницы кто этот класс создал - вы или сервис) значения не имеют и не влияют на свойство CommentValidated и его атрибуты. Ключевое слово partial также ни на что не влияет - это всего лишь инструкция для компилятора. Таким образом
RenziglovОсобенность этого экрана - он прибайндивается к расширению ДТО класса.эта особенность ни на что не влияет, нужно найти еще какую-то особенность, которая влияет, не зацикливайтесь на partial.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686327
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите результирующий html на клиенте. Сравните атрибуты textarea с работающей валидацией и textarea для CommentValidated
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686328
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglovприбайндивается к расширениюи еще - не путайте себя и других, partial - это не расширение, обычно используется термин "разделяемый". У всех частей класса, разбитого на partial части приоритет совершенно одинаковый и ни одна из частей не является расширением другой. Это один и тот же класс, объявленный в нескольких местах.
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686468
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Renziglov,

Вы можете указать для биндинга модель, откуда брать атрибуты валидации, если исходные классы менять нет возможности.

https://msdn.microsoft.com/ru-ru/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx
...
Рейтинг: 0 / 0
Почему не работает клиентская валидация (ASP.NET MVC)?
    #39686469
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RenziglovЧто я должен делать? Модифицировать его для Дата Аннотэйшн:
Код: c#
1.
2.
3.
[RegularExpression(RegexConstants.JSInjection, ErrorMessage = nameof(TextResources.Strings.InjectionWarning))]
public string Comment
...




Но этого делать нельзя - при очередном апдейте все мои модификации исчезнут.

Смотрите ссылку, которую я привёл, там пример есть.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему не работает клиентская валидация (ASP.NET MVC)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]