View中的代码块无法访问基本视图属性

时间:2011-09-05 12:25:20

标签: asp.net-mvc asp.net-mvc-3 razor

我在项目中创建了一个基本视图,用于保存可在任何视图中的任何位置访问的基本属性。 BaseView类包含以下属性。 WebSessionWebRequestWebMain

当我尝试从视图中访问属性时,可以访问它们。但是,当我必须在视图顶部设置一些全局变量时,我有一个要求。所以我在视图之上的单独代码块中创建了这些变量。这是代码......

@(
    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 个答案:

答案 0 :(得分:1)

问题很可能与处理时BaseView布局文件中不存在FormContext的事实有关。从您的问题中不清楚如何派生您的BaseView类,但实例化FormContext是一个很好的起点。在BaseView顶部添加以下内容:

Me.ViewContext.FormContext = New FormContext()