Какое место для серверных элементов управления в ASP.Net MVC?

Какова рекомендуемая замена серверных элементов управления ASP.Net в ярком новом мире ASP.Net MVC?

На мой взгляд, одна из лучших особенностей ASP.Net — это возможность писать серверные элементы управления (хотя, по общему признанию, модель событий ужасна). Если эти элементы управления являются самозаполняемыми, то их можно совместно использовать в разных проектах с минимумом возни — вы просто ссылаетесь на сборку, в которой находится серверный элемент управления, и перетаскиваете ее в файл aspx. Все остальное делает контроль. Это очень хорошо вписывается в мир виджетов и обеспечивает эффективное повторное использование кода. Как можно добиться того же в MVC?

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

Наконец, могу ли я использовать свои старые серверные элементы управления (без обратной передачи) в проектах MVC?


person darasd    schedule 31.03.2009    source источник


Ответы (2)


Вы можете имитировать поведение элементов управления без обратной связи с помощью вспомогательных методов расширения Html. Так же, как Html.TextBox() и т. д., вы можете написать свои собственные и инкапсулировать их в свой собственный проект, если хотите.

Если вы написали элементы управления, которые просто выводят HTML, не должно быть сложно преобразовать их в помощники HTML.

person John Sheehan    schedule 31.03.2009

Самое близкое, что Asp.Net MVC подходит к элементам управления сервером, — это частичные запросы. В частичном запросе вызывается метод действия MVC, и его выходные данные добавляются к текущему представлению. К сожалению, официальная поддержка этого (Html.RenderAction) на данный момент находится в сборке фьючерсов.

Если использование сборки Futures для вас невозможно, блоггер Стив Сандерсон написал статью о реализации аналогичной функциональности:
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

person AaronSieb    schedule 31.03.2009