Проверка MVC с помощью Аннотирований данных - Образцовые классы или классы Модели Представления?

Это - лучшая практика для помещения аннотаций подтверждения правильности данных в Модель Модели или Представления? Каковы преимущества/недостатки одного подхода по другому?

Любопытный видеть, куда все помещают их проверку, я в настоящее время делаю ее в образцовом проекте. Однако я видел, что несколько человек говорят, что это не лучшая практика.

10
задан Ryan Sampson 26 July 2010 в 20:53
поделиться

4 ответа

Что касается лучших практик, я бы сказал: ни в одном из них. Валидация должна быть отдельной. Такие фреймворки, как FluentValidation , позволяют полностью отделить логику проверки от ваших моделей. Но чтобы ответить на ваш вопрос, я бы проверил модели представления, так как это классы, к которым вы привязываете свои действия контроллера. У вас также может быть несколько моделей представления, связанных с одной и той же моделью, но с разными правилами проверки.

10
ответ дан 3 December 2019 в 22:34
поделиться

Поместите свои аннотации в модель просмотра.

Возможно иметь несколько ViewModel для каждой DataModel, например DisplayModel, EditModel, ListModel ... все они могут потребовать разных аннотаций.

Обычно считается лучшей практикой не показывать модель DataModel непосредственно представлению, особенно в сценариях «POST» / Edit.

Я предлагаю прочитать отличный обзор Брэда Уилсона по адресу: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

Эти статьи в основном охватывают использование шаблонов Dislpay и Edit в MVC2, но четко демонстрируют преимущества использования шаблона ViewModel

4
ответ дан 3 December 2019 в 22:34
поделиться

Если вы следуете единственной ответственности, то, вероятно, она должна перейти в отдельный компонент. При этом, если вы хотите сделать сокращение, это нормально, но это можно сделать в ViewModel.Хотя это определенно не должно входить в модель. Ваша модель должна быть "чистыми" данными. Никаких бизнес-правил, а валидация - это бизнес-правила.

1
ответ дан 3 December 2019 в 22:34
поделиться

Что ж, мое мнение таково: это зависит от обстоятельств.Обычно я контролирую свой ввод в контроллерах и моделях, поэтому ввод проверяется как в контроллере, так и в модели. Это на случай, если я захочу привязать модель к другому виду приложения. Скажем, WPF.

Однако многие люди также используют «защитное программирование». Это означает, что проверяется каждый ввод функции (параметра). В этом случае один вход может быть проверен пару раз, но вы гарантируете, что даже если вы что-то измените, логика проверки будет сохраняться.

Итак, у меня возникает пара вопросов:

1) Есть ли шанс, что может быть сценарий, в котором логика проверки будет обойдена. Как привязать модель к приложению wpf.

2) Хочу ли я поставить под угрозу производительность вместо обеспечения безопасности, проверяя ввод в каждой функции?

Мне эта статья о сквозных проблемах также помогла.

Это мои мысли по этому поводу. Надеюсь, это поможет

0
ответ дан 3 December 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: