Меню привязки на странице макета MVC
Я хочу привязать мое меню, полученное из моего запроса LINQ, к меню в макете.
В Asp.net всякий раз, когда у меня было такое требование, я использовал для написания кода привязки динамического меню в случае загрузки masterpage.
В mvc я понимаю что запрос сначала идет к контроллеру а затем загружается соответствующее представление но в моем случае есть две страницы которые мне нужно загрузить
1. макет страницы(мастер-страница) с соответствующими меню
2. Дочерняя страница.(Который имеет какие-либо основные функции.)
Здесь я не могу понять, какой код писать, где.
Пример
1. где написать код для загрузки меню на странице макета?
2. Как вызвать код для загрузки меню?
3. Когда вызывать код для загрузки меню макета страницы и когда & где вызывать мое фактическое действие дочерней страницы?
Что я уже пробовал:
public JsonResult GetMenu() { int LevelId = 1; GEContext gc = new GEContext(); List<Menu> menuList = gc.Menus.Include("MenuRights").ToList(); var pageObject = (from op in gc.Menus join mr in gc.MenuRights on op.MenuId equals mr.MenuId //join us in gc.Users on mr.LevelId equals us.LevelId where mr.LevelId == LevelId select new { op }); return Json(pageObject, JsonRequestBehavior.AllowGet); }
public class Menu { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int MenuId { get; set; } [StringLength(20)] public string MenuName { get; set; } [StringLength(50)] public string ActionName { get; set; } [StringLength(50)] public string ControllerName { get; set; } [StringLength(200)] public string MenuUrl { get; set; } public int ParentId { get; set; } [StringLength(10)] public string TargetWindow { get; set; } //public MenuRights MenuRights { get; set; } [StringLength(20)] public string ProjectCode { get; set; } [ForeignKey("ProjectCode")] public Project Project { get; set; } }
public class MenuRights { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int MenuRightsId { get; set; } public int MenuId { get; set; } public int LevelId { get; set; } [ForeignKey("LevelId")] public Level Level { get; set; } [ForeignKey("MenuId")] public Menu Menu { get; set; } [StringLength(20)] public string ProjectCode { get; set; } [ForeignKey("ProjectCode")] public Project Project { get; set; } }