Comparator.comparingInt(String::length).reversed().thenComparing(Comparator.<String>naturalOrder())
Существует два способа, которыми можно сделать это:
Один: Сделайте BaseController, которому всегда были нужны данные для этих компонентов, установите ViewData["loginbox"] = loginBoxData, и затем можно провести его как так.
<% foreach (var component in GetComponents()) {%>
<%= Html.RenderPartial(component.ViewName, ViewData[component.Name])%>
<%} %>
Проблема об этом методе состоит в том, что у Вас должна быть логика для высказывания, КОГДА все эти данные, необходимые для компонентов, будут выбранными, и если не к.
ДВА:
Существует фьючерсы MVC DLL, который можно загрузить отсюда.
Это Вы ссылаетесь на это и не забываете добавлять его пространство имен к своему web.config, затем необходимо смочь сказать: Html.RenderAction("blah")
- этот метод совершает полную поездку путем контакта с контроллером, инициируйте представление, и возвращает HTML.
Вы могли использовать основную страницу и использовать заполнителей содержания для страниц контента представления и просмотреть пользовательские элементы управления.
Шаблон проекта по умолчанию в ASP.NET Бета Платформы MVC имеет заполнителя содержания для Страницы Контента Представления. Существует также Пользовательский элемент управления Представления для ссылки входа в систему/выхода из системы в главном правом углу страниц.
Страницы контента представления, как предполагается, используются с данными, которые прибывают из Представления, что Вы смотрите на. Т.е. если Вы просматриваете к Index
действие в HomeController
, сервер представит Home/Index.aspx
просмотрите страницу содержания.
На основной странице Вам нужна следующая строка:
<asp:ContentPlaceHolder ID="Holder1" runat="server" />
И на самой странице контента представления Вы сочиняете для того заполнителя со следующим:
<asp:Content ID="Content1" ContentPlaceHolderID="Holder1" runat="server">
<p>This text goes to "Holder1" content place holder and
I can access the ViewData.</p>
<p><%= ViewData["Message"] %>
</asp:Content>
Каждый asp:ContentPlaceHolder
соответствует представлению asp:Content
через идентификатор. Таким образом, если Вы хотите несколько заполнителей как это:
<asp:ContentPlaceHolder ID="Holder1" runat="server" />
<asp:ContentPlaceHolder ID="Holder2" runat="server" />
… Вы может обработать их на странице контента представления как это:
<asp:Content ID="Content1" ContentPlaceHolderID="Holder1" runat="server">
<p>This text goes to "Holder1" content place holder</p>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Holder2" runat="server">
<p>This text goes to "Holder2" content place holder</p>
</asp:Content>
Пользовательские элементы управления представления могут использоваться, независимо от какого представления Вы смотрите на. Вот некоторые примеры просмотра пользовательских элементов управления, взяты от сообщения в блоге Wekeroad о Пользовательских элементах управления Представления. Использовать пользовательский элемент управления представления:
<%=Html.RenderUserControl(“~/UserControls/UserList.ascx”)%>
Если у Вас есть потребность, можно также передать данные и анонимные типы к ним.
<%=Html.RenderUserControl(“~/UserControls/UserList.ascx”,ViewData.Users, new {GroupID=2})%>
не понимая вопроса правильно, я предложил бы подход masterpage. т.е. имейте рендеринг masterpage, который компоненты и страницы получают из masterpage.
я боюсь, что это не хороший ответ как бы то ни было. я не понимаю это: ".. имейте viewname и видеоданные, поставленные контроллером каждого компонента а не контроллером представления, на котором они отображены".