2

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

Например, возьмем простой контроль пейджера в WebForms:

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

Какие инструменты доступны в ASP.NET MVC, чтобы поддерживать аналогично

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

RenderAction (...) является вашим другом здесь. – mxmissile

+3

Это может быть первый раз, когда Webforms когда-либо описывался как «слабосвязанный» .... – womp

+0

mxmisile, спасибо за подсказку. Я рассмотрю это больше. Womp - не полезно. События - это метод, который можно использовать для создания несвязанного соединения компонентов. WebForms построены вокруг событий. – James

ответ

0

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

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

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

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

1

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

Правильно спроектированы, контроллеры и представления в MVC могут быть использованы повторно, так что Edit View для объекта может быть «встроен» в связанный View без изменений.

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

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

+0

Спасибо за ваш ответ Дэйв. Итак, я получу идею частичного просмотра. Я до сих пор не понимаю, как можно легко соединить компоненты. На примере пейджера, как его можно использовать для создания страницы Заказы в одном экземпляре, а Пользователи - в другом, без большого количества повторяющихся C# -кодов? Я уверен, что должен быть какой-то способ (особенно с каркасом, который гордится тем, что он кодирует «Не повторяй себя» - я его еще не вижу. – James

+0

Посмотрите на http://blog.wekeroad.com/2007/ 12/10/aspnet-mvc-pagedlistt/для быстрого примера того, как это можно сделать. Вместо вашей модели, являющейся списком , вы можете вернуть PagedList и логику того, сколько страниц может содержаться в реализации PagedList. Тогда вы можете сделать общий фрагмент, который имеет дело с PagedList. – Jab

+0

Спасибо Jab - это интересный код, помогающий с поисковым вызовом в MVC. Однако на самом деле это не самый пейджинг, который я пытаюсь выработать, это то, как слабо связанные компоненты может быть разработан для использования в рамках MVC. Даже с этим примером кода я не мудрее. – James

 Смежные вопросы

  • Нет связанных вопросов^_^