Логика, которая решает, когда включать или отключать кнопку, должна находиться в контроллере и просто вызывать метод, например, view.EnableContinueButton () , чтобы включить / отключить кнопку на странице.
Фактический код для включения / отключения кнопки на самой странице должен быть реализован в представлении, например, метод EnableContinueButton () , который вызывает что-то вроде btnContinue.Enable () .
Проще говоря, представление должно касаться деталей пользовательского интерфейса (показать / скрыть / включить / отключить элементы пользовательского интерфейса) и оставить всю обработку бизнес-логики контроллеру.Таким образом, контроллеру не нужно заботиться об элементах пользовательского интерфейса, и представление работает независимо от реальной бизнес-логики.
, например, в контроллере,
public void ProcessOrder()
{
if (!controller.ValidateOrder(model.OrderNo))
view.EnableContinueButton(false);
else
// Process the order
...
}
и вView
public void EnableContinueButton(bool enabled)
{
btnContinueButton.Enabled = enabled;
}
Честно говоря, у меня нет большого опыта в MVC (реализованном в одном проекте некоторое время назад), но я надеюсь, что логическое разделение между контроллером и представлением достаточно ясно.