2011-01-14 4 views

답변

1

ViewBag을 사용하여 데이터를 전달할 수 있습니다. 컨트롤러에서

: 당신의

ViewBag.LayoutModel = myData; 

액세스 레이아웃 :

@ViewBag.LayoutModel 

당신은 당신이 원하는 속성 이름을 사용할 수 있도록 그것은, 동적 객체입니다.

1

ViewBag 방법이 가장 쉽습니다. 그러나 고급 기능 및 입력 된 기능이 필요한 경우 해당 부분을 공통 컨트롤러로 부분 뷰 (종속 섹션을 렌더링하는 부분)로 가져갈 수도 있습니다 (값을 자체에서 계산할 수 있고 필요하지 않은 경우). 다른 컨트롤러로부터의 입력), _Layout에서 RenderPartial을 호출합니다.
당신은 내가 당신에게 그것에 대해 좀 더 많은 정보를 제공 할 수 있습니다 싶다면 ... 당신이 데이터를 나타내는 뷰 모델을 만들어 시작 평소처럼

+2

예, 우리에게 그것에 대해 좀 더 많은 정보를 제공하십시오] – cc0

10

:

public class MyViewModel 
{ 
    public string SomeData { get; set; } 
} 

다음 컨트롤러를 가져옵니다 데이터 선가 :

@{ 
    Layout = null; 
} 
<h2>@Model.SomeData</h2> 
:

public class MyDataController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      SomeData = "some data" 
     }; 
     return PartialView(model); 
    } 
} 

후 해당 뷰 (~/Views/MyData/Index.cshtml)이 데이터를 나타내는

마지막 _Layout.cshtml 당신의 내부 어딘가에이 데이터를 포함

@Html.Action("index", "mydata") 
+0

이것은 당신이 모든보기에 수동으로 추가 할 필요가 의미하는 것입니다. 모든 페이지에 대해 _layout.cshtml에 데이터를 전달하는 방법이 있습니까? –

+0

@Anthony Gatlin, 절대로 아닙니다. _Layout =>에'@ Html.Action ("index", "mydata")'를 완벽하게 작성할 수 있습니다. 물론이 레이아웃을 사용하는 응용 프로그램의 모든 페이지에 자동으로 추가됩니다. –