asp.net mvc 2 множественное частичное представление - PullRequest
2 голосов
/ 07 мая 2010

У меня есть контроллер, который отображает 3 разных вида. Но у меня также есть общая часть (div) для каждого представления. Я подумал, что могу создать UserControl с собственным контроллером и включить этот элемент управления в мои представления (Новый контроллер и представление как управление).

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

Я искал в Интернете последние дни просмотра и не нашел подходящего мне рабочего решения. Также я хочу использовать строго типизированные представления / данные.

Приветствия

1 Ответ

2 голосов
/ 07 мая 2010

Вы должны использовать частичное представление.Затем вы вызываете <% Html.PartialRender("MyCommonControl", Model); %> в 3-4 видах, чтобы отобразить общий раздел (например, меню или что-то в этом роде).

Таким образом, вы можете строго ввести частичный вид и передать модель (как в примере выше).) или часть модели, которая имеет к этому отношение.

UserControls действительно являются парадигмой ASP.NET Forms, вам следует использовать частичные представления, поскольку они используют один и тот же MVC View Engine.

Обновление

Если вы поместите PartialView в /Views/Home, он будет доступен только для HomeController Вы хотите поместить его в /Views/Common, чтобы сделать его доступным для ВСЕХ контроллеров.

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

Например:

class CommonSectionViewModel
{
    public string Data { get; set; } // Just Example Data
    public int Count { get; set; }
}

class ProductsModel
{
    public CommonSectionViewModel CommonData { get; set; }
    // Other properties for a products models
}

class CompaniesModel
{
    public CommonSectionViewModel CommonData { get; set; }
    // Other properties for a company model
}

Тогдав ваших представлениях для ваших контроллеров вы вызываете частичный рендеринг следующим образом:

<% Html.PartialView("MyCommonControl", Model.CommonData); %>

Примечание: вы также можете переопределить элемент управления

Имея следующие файлы:

  1. /Views/Common/MyCommonControl.ascx
  2. /Views/Products/MyCommonControl.ascx

При вызове .RenderPartial("MyCommonControl") с номера ProductsController # 2 и с любого другого контроллера используется номер 1.Так что вы можете переопределить функциональность для некоторых контроллеров, если хотите.

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