2017-03-12 6 views
1

MVCのレイアウトページでメニューを動的にロードしたい。Asp.net MVC5のデータベースでLayoutPageのメニューをデータベースから動的にロードしますか?

私は、メニューとメニュー用のモデルであるViewcodeを作成しました。今私が望むのは、メニューを動的にロードすることです。データベースからデータを取得し、レイアウトページでロードする必要があります。

マイモデル

メニュー・モデル

public Menu() 
{ 
    MenuItems = new List<MenuItem>(); 
} 

public int Id { get; set; } 
public string Name { get; set; } 
public List<MenuItem> MenuItems { get; set; } 

私のモデルのMenuItem

public class MenuItem 
{ 
public int Id { get; set; } 
public int UserName { get; set; } 
public string Name { get; set; } 
public string ActionName { get; set; } 
public string ControllerName { get; set; } 
public string Url { get; set; } 
public Menu ParentMenu { get; set; } 
} 

私のコントローラコード

public ActionResult Index() 
    { 
     var menu = new Menu(); 
     menu.Name = "Main Menu"; 
     var query = db.ApplicationNames.Select(e => new { 
      UID= e.UID, 
      e.ApplicationName1 
     }).FirstOrDefault(); 
     var uid = query.UID.ToString(); 
     var name = query.ApplicationName1; 

    var items = new List<MenuItem>() { new MenuItem { Name = "FirstMenu", ControllerName = uid, ActionName = name }}; 
     menu.MenuItems = items; 
     return PartialView("_MenuLayout",menu); 
    } 

@model List<DynamicMenuLoading.Models.Menu> 
     <ul> 
      <li> 
       <a href="#"> 
        <span>@Model.Name</span> 
        </a> 
       <ul> 
        @foreach (var item in Model.MenuItems) 
        { 
         <li><a href="@Url.Action(@item.ActionName , @item.ControllerName)"><i class="fa fa-circle-o"></i>@item.Name</a></li> 
        } 
       </ul> 
      </li> 
     </ul> 

マイレイアウトページ

  <nav id="mainNavigation"> 
      @Html.Partial("_MenuLayout") 
     </nav> 

私のテーブル名のApplicationName

UID ApplicationName

1 EMPLOYEE

2 CUSTOMER

3 CITY

4 STATE

5 COUNTRY

_MenuLayout私の部分図を

私はこのエラーを取得しています私のプロジェクトを実行しようとしていますが:

e:\Task Tried\DynamicMenuLoading\DynamicMenuLoading\Views\Shared_MenuLayout.cshtml(8): error CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

誰も私が何をしたかの間違いを教えてもらえますか?誰もが私の問題を理解し、私の問題を解決することができますか?

答えて

1

概念的な問題: メニューデータを取得してメニュービューを表示するには、別のコントローラアクションを作成する必要があります。

@model DynamicMenuLoading.Models.Menu 

<nav id="mainNavigation"> 
    @Html.Action("MenuLayout", "Home") 
</nav> 

また、あなたの部分図で、クラスメニューのモデル、そのクラスのオブジェクトのないリストを使用します。レイアウトのページからのアクションが

public ActionResult MenuLayout() 
{ 
    var menu = new Menu(); 

    // TODO: Fill menu with data here 

    return PartialView("_MenuLayout", menu); 
} 

コール

+0

nineberry私はこのすべての別個のコントローラーだけをしました –

+0

@snehasusan ???あなたの質問のコードは何か異なることを言います – NineBerry

+0

あなたの答えを詳しく説明できますか? –

関連する問題