2012-04-01 2 views
3

저는 최근에 ASP.NET - MVC 4를 사용하여 웹 사이트를 구축하기 시작했으며, 어떻게 작동하는지에 대해 머리를 쓰려고합니다.부분보기 용 컨트롤러 ASP.NET MVC

모든 페이지에 표시하고자하는 데이터가 있으며 부분보기가이를 위해 유용하다는 것을 알고 있습니다.

부분보기에 항상 데이터를 제공하는 컨트롤러를 만들 수 있습니까? 아니면 어떻게 해결할 수 있습니까?

답변

8

하위 작업이라고합니다.

Html.Action(...)으로 전화하십시오.

+0

추가 요청이 생성됩니까? – johan

+0

@ johan : 아니요. – SLaks

2

부분 뷰에 대한 컨트롤러 동작을 생성 할 수 있습니다. 당신은 모든 페이지에 어떤 것을 inlcluding를 찾고 있다면, 당신은 당신의 _Layout.cshtml 페이지

에 당신이

public ActionResult UserInfo() 
{ 
    UserViewModel objVm=GetUserInf(); 
    // do some stuff 

return View("PartialUserInfo",objVM); 

} 

같은 부분 뷰를 반환하는 일반적인 액션 메소드를 만들 수 추가에 대해 생각해야 이 컨트롤러의 이름은 사용자입니다 가정 (당신의 Views/Users 폴더에 존재하는 "PartialUserInfo"이름을 가진 뷰를 반환합니다. 당신이보기 방법

returnView("Partial/UserInfo",objVm); 
를 호출 할 때 당신이 그것을 언급 할 수있는 다른 위치가보기를 지정하려면 0

Views/Users/Partial 폴더에 "UserInfo"라는보기가 반환됩니다. 당신의 부분보기에

, 당신은 doint에 의해 (있는 경우)이

@model UserViewModel 
@{ 
    Layout=null; 
} 
0

한 가지 방법은 부모 뷰의 모델을 (하나의 모든 부분 지문을 호스팅)하는 것입니다 일반 레이아웃을 비활성화 할 수 있습니다 그 모델에 속성으로 부분적인 전망에 대한 모델을 포함

EX :

MainModel.ModelForPArtialView1 
MainModel.ModelForPArtialView2 
MainModel.ModelForPArtialView3 

상위 뷰에서이 작업을 수행 할 수 있습니다 그 방법

@Html.Partial("PartialView1",MainModel.ModelForPArtialView1) 
@Html.Partial("PartialView2",MainModel.ModelForPArtialView2) 
@Html.Partial("PartialView3",MainModel.ModelForPArtialView3) 
+0

또한 솔루션은보기간에 콘텐츠가 변경되는지 여부에 따라 달라집니다. 부분 뷰의 내용은 모든 부모 뷰에서 정확히 동일합니까? – TGH