2017-06-07 12 views
1

私はasp net coreアプリケーションのレイアウトページを持っています。プロジェクトのページにはさまざまなコントローラーとモデルがあります。ここでは、レイアウト・ページのための私のコードは次のとおりです。 - :データベースからレイアウトページにダイナミックメニューをバインドして、asp net coreのすべてのページに表示します

@if (ViewBag.Industries != null) 
{ 
    @foreach (var items in ViewBag.Industries) 
    { 
     <li class="level0 parent drop-menu"> 
      <a href="index.html"><span>@items.IndustryName</span></a> 
      <ul class="level1"> 
       @foreach (var subitems in items.MasterProductCategory) 
       { 
        <li class="level1 first parent"><a href="404error.html"><span>@subitems.CategoryName</span></a></li> 
       } 
      </ul> 
     </li> 
    } 
} 

、ここでホームコントローラのメニュー項目を取得するための私のコントローラです。 - - ここ

@Html.Partial("_Menu", Model) 

は_Menuという名前の私の部分図のページがある

public ActionResult _Menu() 
     { 
      ViewBag.Industries = _context.MasterIndustry.Include(u => u.MasterProductCategory).ToList(); 
      return PartialView("_Menu", ViewBag.Industries); 
     } 

解決策をデバッグする際、レイアウトページから部分ページに移動していますが、メニューコントローラを呼び出さず、viewBag.Industryが空であるという結果が得られます。すべてのページとすべてのコントローラに対して、メニューコントローラを呼び出して、望ましい結果を得るように、メニューコントローラを作成してください。またはこれを解決するためのよりよい方法があるかどうか。私にお知らせください。

答えて

2

1すべてのコントローラでメニューをグローバル化してから、何らかの操作を実行する前に強制的に実行する必要があります。

public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      // Your logic here... 
      BindMenuItems(); 
      base.OnActionExecuting(filterContext); 
     } 

公共IActionResult BindMenuItems(){

 ViewBag.Industries = _context.MasterIndustry.Include(u => u.MasterProductCategory).ToList(); 
     return View(); 
    } 

レイアウトのページ: - これは、同じ問題に直面している他の人を助ける

@if(ViewBag.Industries != null) 
          {      
           @foreach(var items in ViewBag.Industries) 
            { 
          <li class="level0 parent drop-menu"> 
           <a href="index.html"><span>@items.IndustryName</span></a> 
           <ul class="level1">         
            @foreach(var subitems in items.MasterProductCategory) 
            { 
             <li class="level1 first parent"><a href="404error.html"><span>@subitems.CategoryName</span></a></li> 
            }         
           </ul> 
          </li> 
          } 
          } 

希望。私はそれがbussiness steredされているかどうかを知っていないが、それは私が瞬時に解決を得るのに役立ちます

0

Partial Viewsセルフコントローラを使用しないでください。 View Componentを使用してからレイアウトを呼び出す

関連する問題