RenderPartial имеет перегрузку, которая может принять объект для отправки его в частичное представление.Не забудьте указать @model в верхней части вашего частичного представления для работы с нужным типом объекта.
@Html.RenderPartial ("ViewName", object)
Дополнительная информация: MSDN
Редактировать после комментария:
Я думаю, было бы проще создать MenuController, который принимает в хранилище.Затем позвольте ему создать представление, которое принимает требуемый репозиторий в качестве модели, а затем с помощью foreach визуализировать каждый элемент меню в качестве ссылок действия, передавая ему информацию меню.
Таким образом, вы должны иметь это в своем _layout.cshtml:
<div id="Menu">
@{Html.RenderAction("Menu", "Menu");}
</div>
Это в вашем MenuController:
public class MenuController : Controller
{
private IMenuRepository _repository;
public MenuController(IMenuRepository repo)
{
_repository = repo;
}
//
// GET: /Menu/
public PartialViewResult Menu(string menu = null)
{
ViewBag.SelectedMenu = menu;
IEnumerable<MenuInfoObject> menus= _repository.Menus;
return PartialView(menus);
}
}
И в вашем MenuView:
@model IEnumerable<MenuInfoObject>
@{
Layout = null;
}
@foreach (var item in Model)
{
@Html.RouteLink(item.MenuName, new
{
controller = item.ControllerInfo,
action = item.ActionInfo,
}, new
{
@class = item.Menu == ViewBag.SelectedMenu ? "selected" : null
})
}
Это было бы ближе к решению?