2017-12-31 400 views
-1

에 내비게이션 패널이 있습니다. "_layout.cshtml" db에서 동적으로로드되는 파일입니다. 이제 "href"매개 변수를 "viewname"매개 변수를 통해 내 홈 컨트롤러의 동작 목록에 동적으로 설정하려고합니다. 내 탐색 패널이 Index.cshtml 파일에있을 때ASP.NET MVC - System.Web.Mvc.WebViewPage <TModel>.Model.get가 null을 반환했습니다.

모든 것이 잘 작동하지만 난 각각의 웹 사이트에 그것을 가지고 내 _layout.cshtml 파일 메뉴를 갖고 싶어. 내가 레이아웃 페이지에있을 때 나는 그 오류 :

System.Web.Mvc.WebViewPage<TModel>.Model.get returned null. 

내 탐색 : HomeController에서

<nav class="nav"> 

      @foreach (var electronic in Model.Electronics) 
      { 
       <a href="@Url.Action("List","Home", new { viewname = electronic.Name.ToLower() })" class="nav-link">@electronic.Name</a> 
      } 

     </nav> 

작업 목록 :

public ActionResult List(string viewname) 
     { 
      return View(viewname); 
     } 
+0

당신이 전달되지 않습니다 y 모델을'View' 호출에 추가합니다. –

+0

흠 ... 내가 이해가 안 돼, Index.cshtml에서 뭐가 잘못 됐어? – FreeStyle09

+1

어쩌면 그보기에는 인덱스가없는 더 많은 데이터가 필요합니다. –

답변

0

그래 내가 그 문제를 해결. Html.Action을 통해 모델을 전달하고 PartialView로 반환합니다. 감사합니다 사람

_layout.cshtml

@Html.Action("Menu") 

동작 메뉴 :

[ChildActionOnly] 
     public ActionResult Menu() 
     { 
      var electronics = db.Electronics.ToList(); 

      var vm = new HomeViewModel() 
      { 
       Electronics = electronics, 
      }; 


      return PartialView("Menu", vm); 
     } 

및 부분보기 :

@model PC_SHOP.ViewModels.HomeViewModel 

<div class="header_menu"> 
    <div class="container"> 
     <div class="row"> 

      <nav class="nav"> 

       @foreach (var electronic in Model.Electronics) 
       { 

        <a href="@Url.Action("List", "Home", new { viewname = electronic.Name.ToLower() })" class="nav-link"> @electronic.Name</a> 

       } 

      </nav> 
     </div> 
    </div> 
</div>