2012-04-13 6 views
0

시나리오는 메뉴 인 탐색 모음에 Mvc.Sitemap을 채우는 것입니다._layout.cshtml에 뷰 모델을 추가 할 수 있습니까?

어떻게해야합니까?

레이아웃 페이지에보기 모델을 추가하는 것이 이상하게 느껴집니다. 그리고 이로 인해 뷰는 둘 이상의 뷰 모델을 가질 수 있습니다.

하나가 될 수 있습니까? 고맙습니다.

업데이트 : ---------- MenuViewModel을 사용하는 부분보기로 Home/_Menu가 있습니다. 그런데 어떻게 뷰를 _ 레이아웃에 포함시킬 수 있습니까?

안에 단순히 @Html.Partial("_Menu")을 사용할 수 없습니다. 뷰 모델이 구축 된 컨트롤러와 동작을 지정해야하기 때문입니다. 이 작업을 수행하는 올바른 방법은 무엇입니까?

@Html.RenderAction("_Menu", "Home")을 수행하면 모델에 Object reference not set to an instance of an object. 오류가 발생합니다.

답변

1

기본적으로 거기에서 호출하는 모든보기에이 모델이 있으므로 레이아웃에 모델이 없어야합니다. 대신에 모델로 Menu 뷰를 작성해, 호출하면 (자) 모델에 새로운 MenuModel를 건네줍니다.

편집 : 메뉴 값을 저장할 위치에서 데이터를 가져 오는 클래스를 만들 수 있습니다. 그럼 당신은이처럼이 부분 전화 :

@Html.Partial("_Menu_", menuobject.Root) 

그리고 클래스 :

partial class menuobject 
{ 
    public static menuobject Root 
    { 
     // MenuRoots are all roots that have ID -1 - which will be the root 
     return MenuRoots.Single(x => x.Something == "Topnavi"); // this will return the root above all your menus 
    } 
} 

를보기보다 당신이 그들을 채울 메뉴의 각 수준에() foreach는 이동합니다.

+0

나는 이것을 해보려고 노력해 왔습니다. 업데이트 된 질문을 참조하십시오. 고맙습니다. – Blaise

+0

질문이 업데이트되었습니다. 나는 그것이 도움이되기를 바랍니다. –

관련 문제