2011-01-28 3 views
22

ViewStart 수준에서 설정하려는 특정 ViewBag 속성이 있습니다. 이상적으로, 필자는 필요한 경우 페이지 기반으로 해당 속성을 재정의 할 수 있기를 원합니다. 이것이 가능한가? 그렇다면 ViewStart 페이지 내의 ViewBag 속성에 어떻게 액세스합니까?_ViewStart.cshtml에서 ViewBag 속성을 어떻게 설정합니까?

+0

정답을 참조하십시오. – marcind

답변

10

이 할 수있는 두 가지 방법이 있습니다 :

  1. PageData 속성을 사용하여을 (그것은 ASP.NET 웹 페이지에 더 적용 뭔가 거의 MVC에서 사용되지이다)

    • 세트 :

      @{ 
          PageData["message"] = "Hello"; 
      } 
      
    • 검색

      뷰 인스턴스를 찾을 수
      <h2>@PageData["message"]</h2> 
      
  2. 봅니다 (코드는 조금 더러운이지만, 당신이 ViewBag/ViewData

    • 설정에 직접 액세스 할 수 않습니다

      @{ 
          var c = this.ChildPage; 
          while (c != null) { 
           var vp = c as WebViewPage; 
           if (vp != null) { 
            vp.ViewBag.Message = "Hello1"; 
            break; 
           } 
           c = c.ChildPage; 
          } 
      } 
      
    • 검색 : 평소대로

      <h2>@ViewBag.Message</h2> 
      
+0

불행합니다. 액션 필터는 제 상황에 맞지 않습니다. 어떤 메뉴가 활성화되어 있는지 레이아웃에 알려주는 속성을 설정하려고했습니다. 나는 각 페이지에 속성을 추가 할 것입니다. –

+0

@ 짐 너무 빨랐어. 수정 된 답변보기 – marcind

+0

ViewPage는 세션 대신 페이지에 붙어있는 SessionVar와 유사합니까? – justSteve

관련 문제