Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP MVC 4 - ClientValidation не работает. Шарада / 12 сообщений из 12, страница 1 из 1
20.11.2013, 19:32
    #38471847
Sputnick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
Всем привет!

Ребят подскажите где затык.

Есть у меня солюшн, в нем два проекта WEB(сам сайт) и BLL (бизнес логика)

в WEB есть стандартная форма логина, там ClientValidation отрабатывает нормально, даже создавал тестовый класс в WEB, с параметрами:

[Required]
[StringLength(9, ErrorMessage = "Номер должен быть равен 9 знакам.", MinimumLength = 9)]

он также отрабатывает, то есть не подключенный скрипт или неправильный конфиг отпадает, так как в WEB работает валидация

НО

естественно все мои модели хранятся в BLL и вот если я в WEB заполняю представление, на котором модель с BLL - валидация нивкакую не работает. Скрипты проверял, подгружаются.


Дополнение - возможно ключ к разгадке:
Достался мне другой проект в сопровождение, так такая же схема (WEB + BLL), так вот там, валидация проходит как положено. Я Свой проект, что описал выше делал по аналогии (настройку солюшина, связь WEB с BLL) с этим проектом, все одинаково, но в этом проекте в BLL достаточно сделать любое изменение и в WEB это изменение видно. в то время как в моем верхнем проекте (у которого глюк с валидацией), чтобы увидеть изменения в BLL, этот BLL нужно билднуть, а затем только WEB видит что же я там изменил.
...
Рейтинг: 0 / 0
20.11.2013, 19:34
    #38471853
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
Sputnick,

не используйте модели из BLL, как вью модели. и будет вам счастье.
...
Рейтинг: 0 / 0
20.11.2013, 19:41
    #38471863
Sputnick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
hVostt, спасиб, а можно чуть подробней.... как же мне их использовать?
...
Рейтинг: 0 / 0
20.11.2013, 19:46
    #38471874
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
SputnickhVostt, спасиб, а можно чуть подробней.... как же мне их использовать?

делайте вью-модели в (как вы это называете) WEB-проекте. отражайте данные из BLL во вью-модели
и проблем не будет :)
...
Рейтинг: 0 / 0
20.11.2013, 20:01
    #38471892
Sputnick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
hVostt, получается дублирование модели, это конечно "копейки" но как то странно создавать дубль.... как же тогда в том проекте работает?
...
Рейтинг: 0 / 0
20.11.2013, 20:26
    #38471920
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
SputnickhVostt, получается дублирование модели, это конечно "копейки" но как то странно создавать дубль.... как же тогда в том проекте работает?

дубли только на первый взгляд.

отличий несколько.

1. атрибуты. валидация, наименование и другие атрибуты нужные для отображения (вью) должны быть у вью-модели и не должно быть их у моделей BLL. потому что BLL ничего не должен знать о том, как будут отображены данные и какая логика валидации будет реализована.

2. во вью-модели может быть больше или меньше информации, что предоставляется в модели BLL. другими словами во вью-модели должно быть ровно столько информации, сколько будет отображено. в BLL может быть много технической информации (дата создания, маркер "удалено", права доступа и т.п.), которой непозволительно быть доступной во вью.

3. вью-модель должна работать независимо от наличия или отсутствия BLL. например, разные команды работают одни над моделью, другие над отображением. и не должны сильно зависеть друг от друга. конечно кортежи данных должны быть согласованы, но прямой зависимости быть не должно.

4. контроллеры и вью должы быть отдельно тестируемы, без зависимости от BLL.

ну в общем как-то так. а дальше думайте сами :)

перекидывать данные из BLL во вью-модели можно с помощью Automapper, чтобы уменьшить количество кода.
...
Рейтинг: 0 / 0
20.11.2013, 20:39
    #38471932
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
Sputnickкак же тогда в том проекте работает

поймите, что модели BLL и вью-модели — совершенно разные понятия. цели и семантика разные. не стоит одно выдавать за другое.

и вот в чем конкретно может быть ваша проблема:

http://stackoverflow.com/questions/5717033/stringlength-vs-maxlength-attributes-asp-net-mvc3-with-ef-4-1-code-first
...
Рейтинг: 0 / 0
20.11.2013, 22:20
    #38472023
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
SputnickhVostt, получается дублирование модели, это конечно "копейки" но как то странно создавать дубль.... как же тогда в том проекте работает?
Это разделение ответственности. Всё остальное вторично.
...
Рейтинг: 0 / 0
21.11.2013, 11:06
    #38472545
Sputnick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
hVostt, МСУ

спасибо большое за подробные объяснения, теперь понятно про бизнес модель и модель представления.


hVostt спасибо, спасибо.
...
Рейтинг: 0 / 0
21.11.2013, 11:15
    #38472559
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
Sputnick, самое главное, чтобы ты понимал идею: может использоваться комбинация из нескольких моделей BLL. В этом случае n-моделей бизнес логики уже не прикрутишь к View, как ты изначально хотел. Логично? А в случае архитектуры с моделью представления прикрутишь. Модель представления - это только то, что нужно для работы конкретного View.
...
Рейтинг: 0 / 0
21.11.2013, 11:38
    #38472610
Sputnick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
МСУ,

действительно, получается очень гибко и полностью принцип разделения соблюдается. Спасибо.
...
Рейтинг: 0 / 0
21.11.2013, 12:58
    #38472781
Sputnick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP MVC 4 - ClientValidation не работает. Шарада
каково же было мое удивление, когда валидация так и НЕ заработала ))))))) опять проверял все вдоль и поперек, оказалось есть нюанс с паршил вью, чтоб валидация на нем работала, нужно сделать:

Код: javascript
1.
2.
3.
    $('#form0').removeData('validator');
    $('#form0').removeData('unobtrusiveValidation');
    $.validator.unobtrusive.parse('#form0');
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP MVC 4 - ClientValidation не работает. Шарада / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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