Я относительно новичок в MVC, так что, скорее всего, это вопрос новичка.
Я пытаюсь понять лучшие практики, как поддерживать четкое разделение проблем в нескольких сценариях, которые не кажутся очевидными.
Есть два сценария, которые я сейчас рассматриваю. Представьте себе очень простое приложение, которое позволяет пользователям просматривать и редактировать онлайн-профили для юристов. Существует действие / представление для отображения профиля конкретного пользователя и действие / представление для редактирования профиля конкретного пользователя. Легко представить хороший и чистый класс Model, представляющий детали профиля пользователя, возможно, созданный с помощью Entity Framework и сопоставленный с таблицей SQL профиля пользователя.
В действии вида / представлении для отображения профиля пользователя функционально мне нужна кнопка или ссылка, позволяющая пользователю редактировать профиль. Но это должно быть доступно только некоторому подмножеству пользователей. Например, пользователь может редактировать свой собственный профиль. Кроме того, супер пользователи могут редактировать любой профиль. Мой вопрос заключается в том, как View должен решить, должна ли быть ссылка при отображении определенного профиля. Я предполагаю, что это неправильно для представления, чтобы содержать логику, чтобы определить, может ли текущий пользователь редактировать текущий профиль. Должен ли я добавить свойство IsEditable в класс модели UserProfile? Это не кажется трагичным, но и не совсем правильным. Должен ли я создать новый класс Model, который объединяет UserProfile с дополнительной информацией о безопасности?
Другой сценарий ... При редактировании определенного профиля одна из вещей, которую можно редактировать, это список специальностей для конкретного юриста. Список возможных специальностей не фиксирован. Если представление хочет отобразить их в поле со списком, ему необходим список всех возможных специальностей из базы данных. Представление не должно получать их непосредственно из базы данных, поэтому я снова должен выполнить статистическую модель и снабдить представление как UserProfile, так и списком допустимых специальностей?
Я предполагаю, что общая проблема, которую я пытаюсь выяснить, заключается в том, чтобы мне было удобно создавать множество маленьких классов Model, которые по существу специфичны для отдельных представлений. Каждый класс будет включать различные несвязанные части большей модели предметной области, необходимые для этого конкретного представления.