Вы можете использовать дочерние действия вместе с помощниками Html.Action и Html.RenderAction .Таким образом, у вас может быть действие контроллера, которое возвращает модель представления, указывающую текущую вошедшую в систему информацию о пользователе:
public MenuController: Controller
{
public ActionResult Index()
{
// populate a view model based on the currently logged in user
// User.Identity.Name
MenuViewModel model = ...
return View(model);
}
}
и иметь соответствующий строго типизированный частичный вид, который будет отображать меню или нет.И, наконец, внутри главной страницы есть меню:
<%= Html.Action("Index", "Menu") %>
Таким образом, вы можете иметь совершенно отдельную модель представления, репозиторий и контроллер для меню.Вы все еще можете использовать инжектор конструктора для этого контроллера, и все остается строго типизированным.Конечно, для основного контроллера будет совершенно другая модель представления, основанная на текущей странице.Вам не нужно иметь базовые контроллеры или модель базового представления, которую должны возвращать все ваши действия.