在ascx页面的ascx.vb页面中调用名称空间内的函数

时间:2014-08-05 14:49:16

标签: asp.net vb.net

我的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()%>' />

2 个答案:

答案 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应用程序。这对我有用