То, что я делал для меню и других элементов навигации, - это то, что у меня есть класс ViewModel для него. Вот упрощенная версия.
ViewModel
public class Action
{
public string DisplayName { get; set; } // localized
public string Url { get; set;
}
public class MenuViewModel
{
public List<Action> Actions { get; set; }
public MenuViewModel()
{
this.Actions = new List<Action>();
}
}
Я заполняю это в зависимости от роли пользователя. Администратор получает больше ссылок и т. Д.
То, что ViewModel является частью "основной" модели вида
public class AlbumEditorViewModel
{
public MenuViewModel Menu { get; set; }
}
Затем я передам эту модель представления для частичного представления, отвечающего за меню.
Вид (Razor)
@model AlbumEditorViewModel
.. razor stuff here ..
@Html.Partial("Menu", Model.Navigation)
.. razor stuff here ..
Частичное представление
@model MenuViewModel
<ul>
@foreach (var action in Model.Actions)
{
<li>
@GridHelper.GetAction(action)
</li>
}
</ul>
Я надеюсь, что это даст вам идеи