Вы должны использовать частичное представление.Затем вы вызываете <% 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); %>
Примечание: вы также можете переопределить элемент управления
Имея следующие файлы:
/Views/Common/MyCommonControl.ascx
/Views/Products/MyCommonControl.ascx
При вызове .RenderPartial("MyCommonControl")
с номера ProductsController
# 2 и с любого другого контроллера используется номер 1.Так что вы можете переопределить функциональность для некоторых контроллеров, если хотите.