Как бы вы поддержали внешние компонуемые детали в представлении ASP.NET MVC?
Что я имею в виду под этим? Подумайте либо «окно входа на каждой странице», либо «iGoogle». Это вещи, которые должны находиться в определенных местах, внешних по отношению к каждому контроллеру / представлению.
Один из подходов к этому - добавить компоненты в представление следующим образом:
<% foreach (var component in GetComponents()) {%>
<%= Html.RenderPartial(component.ViewName, component.ViewData)%>
<%} %>
В приведенном выше примере я ищу хороший способ, чтобы имя и данные представления передавались контроллером каждого компонента, а не контроллером представления, на котором они отображаются. Любое совершенно другое решение, которое вы можете предложить, также будет интересно. Фильтры, веб-формы и т. Д.
Обновление: Я попытаюсь объяснить пример того, что я пытаюсь обернуть вокруг себя. Я выберу функциональность входа в систему.
В типичном приложении веб-форм это может быть пользовательский элемент управления, который извлекает соответствующие данные в событии загрузки жизненного цикла страницы и обновляет некоторые элементы управления пользовательского интерфейса. После щелчка страница будет отправлена обратно, и мы можем использовать опубликованную информацию в событии щелчка в том же пользовательском элементе управления.
Насколько мне известно о стиле ASP.NET MVC, контроллер, который сначала принимает запрос , извлекает соответствующие данные и передает их представлению, которое, в свою очередь, передает это вместе с частичным представлением входа в систему. Представление входа в систему определило бы форму, действие сообщения которой направлено на действие входа контроллера входа в систему. опубликованная информация используется действием входа в систему, и мы можем выбрать передачу запроса первоначальному контроллеру по некоторой изящной схеме.
Я предполагаю, что есть более разумный подход, чем описанный выше, который не требует, чтобы я помещал логику контроллера в представление / главную страницу.