2011-09-05 5 views
0

모든보기에서 아무 곳에서나 액세스 할 수있는 기본 속성을 유지하기 위해 프로젝트에 기본보기를 만들었습니다. BaseView 클래스에는 다음과 같은 속성이 포함되어 있습니다. WebSession, WebRequest, WebMain보기의 코드 블록이 기본보기 속성에 액세스 할 수 없습니다.

보기 내에서 속성에 액세스하려고하면 액세스 할 수 있습니다. 그러나 뷰의 맨 위에 일부 전역 변수를 설정해야 할 때 요구 사항이있었습니다. 그래서 뷰의 맨 위에 별도의 코드 블록에 변수를 만들었습니다. 컴파일 할 때 다음 코드는 ...

@(
    Dim panelInfoVisibility As Boolean = False 
    Select Case WebSession.Menu 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Home 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Reservieren 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Kaufen 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Verkaufen 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Member 
      If Request.RawUrl.Contains("login") Then 
       panelInfoVisibility = True 
      End If 
    End Select 
) 

이 코드는 컴파일 오류를 제공하는 'WebSession' is not declared. It may be inaccessible due to its protection level.

...이 같은이 변수를 사용하고 아래의보기에있는 동안

@If panelInfoVisibility Then 
    @: <div id="panelInfo">Here it goes....</div> 
End If 

수 아무도 내가 여기서 뭘 잘못하고 있는지 말해.

답변

1

문제는 아마도 FormContext이 BaseView la에 없다는 사실과 관련이있다. yout 파일을 처리하고 있습니다. 귀하의 질문에 당신의 BaseView 클래스가 어떻게 파생되었는지는 명확하지 않지만 FormContext를 인스턴스화하는 것이 좋은 출발점입니다. Baseview 상단에 다음을 추가하십시오 :

Me.ViewContext.FormContext = New FormContext() 
+0

귀하의 의견을 보내 주셔서 감사합니다. 이전 컴파일러 오류를 제거하는 데 도움이되었지만 이제는 5 행에 'Expression Expected'라는 새로운 오류가 표시됩니다. 이 행은 : @ ('. 내가 무엇을 잘못했는지 모른다. 내 BaseView 클래스는 'WebViewPage' (그리고'WebViewPage (Of TModel)')에서 파생되었다. –

+0

+1 올바른 방향으로 가리키고있다. .. :) –

관련 문제