sunil mali Ответов: 0

Меню привязки на странице макета 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; }

}

0 Ответов