我的ascx.vb页面中有一个函数需要从ascx页面调用。 但是,我收到的错误是“未声明,并且由于其保护级别而无法访问”。
我在想,出于某种原因,我的ascx.vb页面的功能无法从我的ascx页面看到。
我实际上有这个代码在没有命名空间的aspx页面中工作。任何人都知道导致此错误的原因是什么?
ascx.vb名称空间部分的内容如下:
Namespace StaffLookup
Public Class Main
Inherits PortalModuleBase
然后ascx.vb中的函数是这样的:
Public Function ProcessPictures() As String
Return "http://info/scripts/personnel/IDVerify/BadgePictures/transparent.jpg"
End Function
ascx中的调用是这样的:
<img src='<%# ProcessPictures()%>' />
答案 0 :(得分:0)
我能够重现此错误的唯一方法是,如果第二个类具有相同的命名空间,类名和方法名,其中第二个方法具有私有范围。
编译器正在合并这两个类,并且该方法的私有版本最终成为使用的版本,因此您最终会遇到您所看到的错误。类名和方法名称会有警告消息。
检查你的代码,看看你是否有另一个具有相同命名空间和类名的类,然后看看它是否有一个具有相同签名的方法。
还要检查从 PortalModuleBase 开始的继承链中的父类。一旦到达 UserControl ,就可以停止查看。
像这样:
Namespace StaffLookup
Public Class Main
Inherits PortalModuleBase
Public Function ProcessPictures() As String
Return "http://info/scripts/personnel/IDVerify/BadgePictures/transparent.jpg"
End Function
End Class
End Namespace
Namespace StaffLookup
Public Class Main
Private Function ProcessPictures() As String
Return "http://info/scripts/personnel/IDVerify/BadgePictures/transparent.jpg"
End Function
End Class
End Namespace
答案 1 :(得分:0)
快来找出答案就在这里:
Asp.net controls are not accessible in code behind
即使在创建全新的空应用程序时,您也必须右键单击并选择转换为Web应用程序。这对我有用