У меня есть класс Person в модели, и я хочу назначить 15 его атрибутов меткам в представлении. Представление не должно обращаться к модели. Это означает, что контроллер будет обрабатывать создание человека. Как View получает эти атрибуты Person от контроллера? Если контроллер содержит член типа Person, представление может делать что-то вроде:
lblFirstName.Text = theController.Person.FirstName;
lblLastName.Text = theController.Person.LastName;
lblCity.Text = theController.Person.City;
Тем не менее, представление все еще имеет прямой доступ к модели (то есть персоне). Контроллер может иметь свой собственный класс Person, скопировать в него все атрибуты Person модели и использовать синтаксис View, как указано выше. Но в этом дизайне много дублирования. Есть предложения?
Кстати, это в форме win. Модель также является отдельным проектом / DLL. Что такое DTO?
Атрибуты Person в Модели имеют специальную логику, с которой я не хотел, чтобы у View возникали проблемы. Например, представление может сделать:
string fn = myController.Firstname;
И получить исключение из-за логики в свойстве FirstName. Таким образом, облегченная (дублирующаяся) версия объекта Person контроллера не будет иметь ни одной из этих проблем, поскольку его свойства являются только строками.
Также обратите внимание, что вашему представлению потребуется ссылка на модель для обработки скрытого свойства Person, получаемого из контроллера. Мне это не нравится.