Общий пользовательский элемент управления ASP.NET MVC - PullRequest
0 голосов
/ 02 апреля 2011

Я создал универсальный пользовательский элемент управления в vanilla ASP.NET:

  • Через установленное свойство он берет набор метаданных со страницы A, B или любой другой родительской страницы.случайно существует.

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

  • В выделенном для кода пользовательском элементе управления, основанном на его метаданных, динамически воспроизводится дочерние элементы по мере необходимости.

Сейчас я изучаю ASP.NET MVC.Сегодня, будучи первым днем ​​такой деятельности, я понятия не имею, как можно перенести универсальность этого пользовательского элемента управления.Есть ли у страниц отношения один к одному с контроллерами?Как насчет пользовательских элементов управления?Будет ли моя общая ссылка для управления пользователем напрямую на один или несколько контроллеров?Если да, то как назначается эта ссылка?Или каждый контроллер просто передает данные представления пользовательскому элементу управления?

Кто-нибудь может дать мне соображения по поводу высокого уровня проектирования для моего сценария?Или укажите мне полезные ссылки?

Ответы [ 3 ]

0 голосов
/ 02 апреля 2011

На самом деле, просто чтобы указать вам направление, вы можете посмотреть на следующее:

Загрузка представления из сериализованного источника (такого как встроенная строка sql / resource) через пользовательский механизм просмотра.

ИЛИ Пользовательский метод расширения Html-помощника.

один из этих двух и

Фабрика / активатор нестандартного контроллера (для обслуживания контроллера + действия вне веб-сайта MVC или в указанном bin-файле)

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

Итак, чтобы использовать «гранулированный, автономный» пользовательский элемент управления, вам потребуется эта инфраструктура и специальный элемент управления, упакованный специальным образом.

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

0 голосов
/ 02 апреля 2011

Пара мыслей, чтобы вы катались. Надеюсь, это поможет.

  • Думая о MVC, думайте о «Представлении» как о традиционной «Странице» без кода. «Вид» имеет элементы управления, а также HTML и другую логику для рендеринга.

  • Традиционный код позади заменен на «Модель». Контроллер содержит логику, чтобы решить, с какого экземпляра объекта модели передается «Вид»

  • «Контроллеры» не привязаны ни к какому виду. Лучший способ думать об этом. Контроллер может обрабатывать несколько «действий». Код обработки для каждого «действия» может возвращать «представление». Это «представление», отображаемое для пользователя.

  • Представление может совместно использоваться несколькими действиями внутри контроллера, а также между контроллерами.

  • У вас есть возможность разложить ваше представление на частичное представление (аналогично понятию главной страницы / страницы содержимого)

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

Возьмите пару ваших страниц .aspx и измените их на представления. При этом попробуйте рефакторинг кода в codebehind в модели. Любой найденный вами код, который вызывает базу данных и создает объект данных для рендеринга, перемещает их в контроллер.

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

Упражнение должно дать вам хорошее представление о том, каковы ваши варианты переноса.

0 голосов
/ 02 апреля 2011

Ох, боже ...

Концепция Asp.Net mvc также неразрывно связана со структурой сайта в стиле RESTful.Я не собираюсь объяснять MVC снова, так как есть отличные статьи, такие как http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx

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

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

EG Поле входа в систему -> элемент формы с вводом логина / пароля, который публикуется в / Account / Login

Поле регистрации -> элемент формы с именем /адрес электронной почты / пароль, которые отправляются в / Account / Register

и т. д. и т. д.

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

Правка - я считаю, что лучший способ изучить MVC - это начать с небольшого проекта и начать работу.Также совет.В Asp.Net MVC есть много «соглашений», которым вы хотите следовать.

Например.страница по умолчанию в / home / index.страница по умолчанию - / index.структура имен папок.

Конечно, вы можете изменить все это, но обычно вы просто теряете время.

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