Состав UI в ASP.NET MVC

Comparator.comparingInt(String::length).reversed().thenComparing(Comparator.<String>naturalOrder())

5
задан Spoike 18 January 2009 в 08:51
поделиться

3 ответа

Существует два способа, которыми можно сделать это:

Один: Сделайте BaseController, которому всегда были нужны данные для этих компонентов, установите ViewData["loginbox"] = loginBoxData, и затем можно провести его как так.

<% foreach (var component in GetComponents()) {%>
        <%= Html.RenderPartial(component.ViewName, ViewData[component.Name])%>
<%} %>

Проблема об этом методе состоит в том, что у Вас должна быть логика для высказывания, КОГДА все эти данные, необходимые для компонентов, будут выбранными, и если не к.

ДВА:

Существует фьючерсы MVC DLL, который можно загрузить отсюда.

Это Вы ссылаетесь на это и не забываете добавлять его пространство имен к своему web.config, затем необходимо смочь сказать: Html.RenderAction("blah") - этот метод совершает полную поездку путем контакта с контроллером, инициируйте представление, и возвращает HTML.

5
ответ дан 14 December 2019 в 04:49
поделиться

Вы могли использовать основную страницу и использовать заполнителей содержания для страниц контента представления и просмотреть пользовательские элементы управления.

Шаблон проекта по умолчанию в 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})%>
2
ответ дан 14 December 2019 в 04:49
поделиться

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

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

1
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: