2013-07-28 3 views
0

세 개의 부분 뷰가 포함 된 레이아웃이 있습니다. 각각간에 ViewBag 변수를 공유 할 수 있습니까? 그렇지 않다면, 부분 뷰의 일부 정보를 다른 뷰와 공유 할 수 있습니까? 감사합니다.ASP.Net MVC 3에서 변수 공유

답변

0

가능합니다.

controllerViewBag 항목의 값을 설정하고 partials에서 참조하십시오.

컨트롤러 작업 :

public ActionResult Index() 
{ 
    ViewBag.Test = "Something"; 
    return View(); 
} 

보기 :

<div>@Html.Partial("_Test")</div> 

부분 :

@ViewBag.Test 
0

내가,하지만 난이 ViewBag 모든 사이에 공유되는 것을 100 % 확신하지 보라 해요 조회수.

그게 효과가 없다면 컨트롤러의 공유 변수를 컨트롤러에서 부분보기로 전달할 수 없습니까?

1

필자는 뷰에 전달하여 종속성을보다 명시 적으로 표현했습니다.

상위 모델의 공통 데이터를 부분 모델의 ViewModel에 모델로 또는 하위 모델의 일부로 전달합니다.

@Html.Partial("Partial1", Model.CommonData) 
@Html.Partial("Partial2", Model.CommonData) 
@Html.Partial("Partial3", Model.CommonData) 
0

예, ViewBag 그러나, 당신은 당신이 부분이 실행되는 순서를 예측하지 못할 수 있다는 사실을 의식 할 필요가 모든 부분 지문에서 사용할 수 있습니다. 즉, 하나의 부분이 다른 부분에 설정된 변수에 의존하면 다른 부분이 그 부분 앞에 렌더링된다는 것을 보장 할 수 없습니다.

컨트롤러의 모든 변수를 설정 한 다음보기에서만 변수를 사용하는 것이 가장 좋습니다.

관련 문제