Имеет ли смысл элемент управления в MVC? - PullRequest
2 голосов
/ 13 марта 2009

Я начал использовать MVC недавно, и одна вещь, которая приходит мне в голову, - возможно ли существование концепции Control в MVC?

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

Я имею в виду, что мне кажется, что любые компоненты пользовательского интерфейса, которые я создаю с помощью MVC, возможно, не очень пригодны для повторного использования, так же как вы можете повторно использовать Contol в ASP.NET WebForms. Хорошо, есть HTML-помощники, но я думаю о чем-то более модульном. Что-то похожее на модель управления в WPF.

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

Ответы [ 4 ]

2 голосов
/ 08 октября 2009

Я искал то же самое - для многократно используемых виджетов со своими собственными путями данных и нашел это в блоге Стива Сандерсона:

http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

Из статьи:

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

В этой статье с уважением предлагается альтернатива стратегии субконтроллера MVC Contrib Group (http://www.mvccontrib.org/), которая также является решением для того, что вы ищете.

2 голосов
/ 13 марта 2009

Вы по-прежнему можете использовать ascx файлы и другие функции в ASP.NET Web Forms. Единственный недостающий компонент в MVC - это модель обратной передачи и управление состоянием, ориентированным на состояние. Больше нет <form runat="server"> и автоматически сгенерированных скрытых полей. Кроме них, все остальные функции могут быть использованы в ASP.NET MVC. Вы по-прежнему можете писать элементы управления, которые публикуют данные, используя механизм на основе REST, и использовать их в своих представлениях.

Так что, да, если ваши элементы управления не используют серверную форму для обратной передачи, вы можете использовать их точно так же, как и в ASP.NET Web Forms.

1 голос
/ 13 марта 2009

Полагаю, в MVC сложнее полностью инкапсулировать рендеринг и постобработку в одном элементе управления, который вы просто перетаскиваете на страницу. В некотором смысле это связано с тем, что ASP.NET Webforms очень абстрагированы от семантики HTTP, и эта абстракция является структурой, в которой можно создавать повторно используемые пользовательские элементы управления.

ASP.NET MVC не имеет абстракции веб-форм, поэтому вы можете контролировать сообщения на трех разных контроллерах. Хотя при переходе на ASP.NET MVC может показаться, что вы теряете простые в использовании элементы управления, я думаю, что у вас есть лучшая структура для разделения и повторного использования логики домена.

В ASP.NET MVC у вас есть частичные представления, которые можно использовать повторно. У Роба Конери есть хороший пост на эту тему: ASP.NET MVC: Использование UserControls с пользой

0 голосов
/ 27 февраля 2013

Я думаю, что ближе всего к элементам управления старой школы вы получите частичные представления, это фактически просто общая разметка, которую вы можете перетащить на любую страницу. Однако у них нет своих собственных контроллеров из коробки, поэтому код для питания общего компонента пользовательского интерфейса (частичное представление) должен существовать в контроллере каждой страницы, которая его использует. Есть способы уменьшить дублирование кода, но без реализации частичных контроллеров представления и связывания, я не думаю, что есть способ обойти это полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...