ASP.Net MVC - Что заменяет события для поддержки слабой связи?

Какие функции ASP.Net MVC могут заменить способ использования событий в веб-формах для поддержки слабосвязанных компонентов?

Например, возьмем простой элемент управления пейджером в Webforms:

  1. Номер страницы нажимается
  2. Пейджер запускает событие "PageChange" с новым номером страницы
  3. Эта страница / элемент управления подписки получает событие и обрабатывает инициирование вызова для извлечения и связывания новых данных.

Какие инструменты доступны в ASP.Net MVC для аналогичной поддержки

  • Слабая связь
  • Повторное использование компонентов
  • Разделение логики для одной страницы / вида (такой очень сложный тип страницы "портал").

2 ответа

Решение

MVC устраняет события, потому что события по большей части являются просто ненужным слоем между тем, что клиент пытается сказать серверу, и сервером, фактически делающим это.

В примере разбивки на страницы для веб-форм клиент нажимает кнопку, браузер отправляет событие / представление состояния, и механизм запускает событие ButtonClicked. Вы проверяете событие, определяете, что клиент намеревается создать страницу, и выполняете логику подкачки.

В парадигме MVC пользователь нажимает кнопку, которая делает запрос непосредственно к коду, который выполняет логику подкачки. Поскольку вы знаете, какое действие должна вызывать кнопка, когда вы ее нажимаете, зачем проходить все махинации запуска события? В вашем контроллере вы, конечно, можете запустить событие, когда получите команду, но я, честно говоря, не могу представить себе вариант использования для этого.

Оба метода выполняют одно и то же, но MVC просто устраняет уровень сложности.

ASP.NET MVC и Model-View-Controller в целом поддерживают слабую связь и разделение задач, храня данные и код, поддерживающий приложение, отдельно от визуальной разметки уровня представления, которую видят пользователи.

Разработанные должным образом, контроллеры и представления в MVC могут быть повторно использованы, так что представление редактирования для сущности может быть "встроено" в связанный вид без изменения.

Например: представление заказов может включать частичное представление OrdersDetail. Это частичное представление можно заменить на представление редактирования OrderDetail, которое также доступно в другом месте приложения.

Отделение модели от представления делает модульное тестирование более эффективным и менее обременительным за счет отделения кода от контекста уровня представления. Вам не нужно ссылаться на System.Web для кода модульного тестирования, который извлекает данные из базы данных.

Другие вопросы по тегам