Это правильная интерпретация MVC? - PullRequest
1 голос
/ 02 октября 2009

Скажем, у вас есть объект customer и форма "file file", которая управляет этим объектом. Является ли следующее правильное толкование MVC?

Customer - Model
CustomerForm.cs - Controller
CustomerForm.desinger.cs - View

Несмотря на то, что CustomerForm.cs и CustomerForm.designer.cs являются частями одного и того же класса, из того, что я знаю о MVC, похоже, имеет смысл, что

1) вид и контроллер часто, если не всегда, тесно связаны

2) представление устанавливает, как все «выглядит» (т.е. свойства usercontrol)

3) поведение интерфейса выполняется в контроллере (показывается с помощью обработчиков событий и любой ручной привязки данных)

4) логика домена должна существовать в модели (я предполагаю, что Customer.cs реализует такие вещи, как IDataErrorInfo, INotifyPropertyChanged и т. Д.)

Я спрашиваю, потому что вижу одно или два разъединения: при использовании привязки данных через конструктор я ожидал бы, что нечто подобное произойдет в CustomerForm.cs, а также при прослушивании / ответе на события INotifyPropertChanged. Но в целом, это точно?

Ответы [ 2 ]

1 голос
/ 02 октября 2009

Да, у вас есть суть этого. Представления и контроллеры не обязательно сильно связаны, так как вы можете иметь представление, отображаемое несколькими различными контроллерами и наоборот, а также частичные представления. MVC не выполняет привязку данных в смысле веб-форм, поэтому лучше, чтобы ваш объект получал необходимые ему данные либо сам по себе, либо с использованием ORM, такого как nHibernate, с шаблоном проектирования хранилища.

0 голосов
/ 02 октября 2009

MVC - это разделение интересов (SoC). Обычно в качестве модели используется модель вашего домена (класс Customer в вашем примере). Вы бы тогда получили свой контроллер. Ваш контроллер соединяет модель с представлением. Например, вы должны вызвать свой уровень доступа к данным, чтобы получить информацию и отправить ее в представление. Представление - это просто HTML-страница, которая берет информацию, отправленную с контроллера, и отображает ее.

Пример:

Customer.cs будет иметь такие свойства, как Name, Address, Company и т. Д. CustomerController.cs будет иметь такой метод, как List, который соединяет модель с представлением. Обычно у вас будет отдельный слой доступа к данным (с чем-то вроде NHibernate или Subsonic), который использует шаблон хранилища. List.aspx будет иметь HTML, который отображает информацию, переданную ему. Затем вы бы позвонили http://domain.com/Customer/List, чтобы просмотреть список клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...