ASP.Net MVC - Что заменяет события для поддержки слабой связи?
Какие функции ASP.Net MVC могут заменить способ использования событий в веб-формах для поддержки слабосвязанных компонентов?
Например, возьмем простой элемент управления пейджером в Webforms:
- Номер страницы нажимается
- Пейджер запускает событие "PageChange" с новым номером страницы
- Эта страница / элемент управления подписки получает событие и обрабатывает инициирование вызова для извлечения и связывания новых данных.
Какие инструменты доступны в ASP.Net MVC для аналогичной поддержки
- Слабая связь
- Повторное использование компонентов
- Разделение логики для одной страницы / вида (такой очень сложный тип страницы "портал").
2 ответа
MVC устраняет события, потому что события по большей части являются просто ненужным слоем между тем, что клиент пытается сказать серверу, и сервером, фактически делающим это.
В примере разбивки на страницы для веб-форм клиент нажимает кнопку, браузер отправляет событие / представление состояния, и механизм запускает событие ButtonClicked. Вы проверяете событие, определяете, что клиент намеревается создать страницу, и выполняете логику подкачки.
В парадигме MVC пользователь нажимает кнопку, которая делает запрос непосредственно к коду, который выполняет логику подкачки. Поскольку вы знаете, какое действие должна вызывать кнопка, когда вы ее нажимаете, зачем проходить все махинации запуска события? В вашем контроллере вы, конечно, можете запустить событие, когда получите команду, но я, честно говоря, не могу представить себе вариант использования для этого.
Оба метода выполняют одно и то же, но MVC просто устраняет уровень сложности.
ASP.NET MVC и Model-View-Controller в целом поддерживают слабую связь и разделение задач, храня данные и код, поддерживающий приложение, отдельно от визуальной разметки уровня представления, которую видят пользователи.
Разработанные должным образом, контроллеры и представления в MVC могут быть повторно использованы, так что представление редактирования для сущности может быть "встроено" в связанный вид без изменения.
Например: представление заказов может включать частичное представление OrdersDetail. Это частичное представление можно заменить на представление редактирования OrderDetail, которое также доступно в другом месте приложения.
Отделение модели от представления делает модульное тестирование более эффективным и менее обременительным за счет отделения кода от контекста уровня представления. Вам не нужно ссылаться на System.Web для кода модульного тестирования, который извлекает данные из базы данных.