代码隐藏属性在设计时无法访问,但在运行时可以正常工作

时间:2017-04-27 11:42:12

标签: asp.net vb.net visual-studio-2015

我必须对遗留的ASP.NET网站进行一些更改。它有一个像这样的属性声明:

Public ReadOnly Property Foo As String
    Get
        If Not Session("Foo") Is Nothing Then
           Return Session("Foo").ToString()
        Else
           Return ""
        End If
    End Get
End Property

在设计时,查看标记页面上的一些javascript,该属性无法访问,虽然它在运行时正常运行。这种皱纹使得这个问题与此处提出的其他问题略有不同。

  var f = <%= Foo %>;  

在Visual Studio编辑器中,Foo带有红色下划线;工具提示中显示的错误:Foo is undeclared. It may be inaccessible due to its protection level

页面上的所有属性都不可访问,而不仅仅是这一个。

在设计时可能导致虚假错误的原因是什么?

编辑:这里有一些新信息:

在页面上的对象声明中,我收到此错误:

Private WithEvents MyGizmo as Gizmo

Class MyAssemblyName.Gizmo
   MyAssemblyName -- Not Available
   MyAssemblyName -- Available

我不明白。 MyAssemblyName被提及两次,一次不可用,一次可用。

结束新信息

我已经检查了页面声明:

MyAssemblyName匹配程序集名称和根名称空间,如项目属性页面所示。​​

应用程序类型为类库

我已经检查了班级声明的保护级别:

Public Class Widgets

End Class

并确保Web表单设计器生成代码存在:

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

还有什么要检查的?

0 个答案:

没有答案