我必须对遗留的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
还有什么要检查的?