Я бы описал MVC больше так:
Запрос (маршрутизация URL MVC, некоторые события переданы из предыдущего интерфейса и т. Д.)
Контроллер - проверка учетных данных, получение данных, возврат Модель
Модель - представляет данные, переданные обратно из контроллера
Просмотр - визуализация модели, возвращаемой контроллером. В зависимости от модели может отображаться пользовательский интерфейс для инициализации новых действий контроллера. Может также передавать модель обратно к следующему действию контроллера.
Я думаю, что это может быть немного запутано, потому что во многих реализациях Модели (таких как Linq) они обеспечивают определение данных и доступ к ним, но все равно Контроллер знает, с чего начать (даже если Модель знает, как сохранить ее). собственные изменения).
Итак, ваш код должен выглядеть примерно так:
//Controller:
public class PersonController
{
public PersonAction Detail(int personId)
{
Person returnValue;
//get person from DB and populate returnValue
return new PersonAction( returnValue );
}
}
//Model:
public class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
//View:
public partial class PersonDetailView : MVCForm<Person>
{
public Form1( Person model ):base(model) {
textBox1.Text = model.FirstName + " " + model.LastName;
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = model.FirstName + " " + model.LastName;
}
}
Чего не хватает в этом примере, так это структуры, которая делает все это возможным - здесь есть две важные части:
То, что принимает / анализирует параметры и на основе этого вызывает метод действия контроллера. Например, в Asp.net MVC это обработчики маршрутизации - вышеуказанным вызовом будет URL запроса: ~ / Person / Detail / personId
Что-то, что получает результат от действия (PersonAction
в приведенном выше примере) и находит правильный вид для отображения. В этом примере он откроет форму PersonDetailView
и передаст ей модель Person
.
Существует множество примеров инфраструктур для реализации MVC для WinForms - одна из них может быть хорошей отправной точкой.