Необходимо использовать частичный вид. Затем вы вызываете <% Html.PartialRender("MyCommonControl", Model); %>
в 3-4 вида, чтобы отобразить общий раздел (например, меню или что-то еще).
Таким образом, вы можете строго набрать частичный вид и передать модель (как в приведенном выше примере) или часть модели к ней, которая имеет значение.
UserControls - это парадигма ASP.NET Forms, вы должны использовать частичные представления, потому что они используют один и тот же MVC View Engine.
Update
Если вы поместите PartialView в /Views/Home
он будет доступен только в HomeController
Вы хотите поместить его в /Views/Common
, чтобы сделать его доступным для всех контроллеров.
Вы должны также сделать Generic ViewModel для данных, которые управляют потребности, и сделать его субкомпонент моделей для каждого контроллера:
Например:
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); %>
Примечание: вы можете изменить управление, а также
Имея следующие файлы:
/Views/Common/MyCommonControl.ascx
/Views/Products/MyCommonControl.ascx
При вызове .RenderPartial("MyCommonControl")
из ProductsController
# 2 используется, и от любого другого контроллера, # 1 используется. Поэтому вы можете переопределить функциональность для некоторых контроллеров, если хотите.
Thanks Aren, Этот общий раздел будет содержать данные из запроса БД. Если у меня есть отдельный контроллер для этого представления, должен ли я помещать этот элемент управления в другую папку, а не хранить его в папке, где хранятся другие представления? – 303
Я обновил свои примеры, чтобы показать вам больше :) – Aren
Спасибо Арен! – 303