C# ASP.net-从类声明中获取页面虚拟页面

C# ASP.net-从类声明中获取页面虚拟页面,c#,asp.net,vb.net,C#,Asp.net,Vb.net,我正在尝试获取一个类的类虚拟路径。 当类被实例化时,我可以调用this.AppRelativeVirtualPath(或者,在VBMe.AppRelativeVirtualPath)中,它会给我“~/content/page.aspx” 现在,我需要调用类,而不是实例来获取路径。大概是这样的: public class Page : System.Web.UI.Page { public static string GetPath() { return Page.AppRelativeV

我正在尝试获取一个类的类虚拟路径。 当类被实例化时,我可以调用
this.AppRelativeVirtualPath
(或者,在VB
Me.AppRelativeVirtualPath
)中,它会给我“~/content/page.aspx”

现在,我需要调用类,而不是实例来获取路径。大概是这样的:

public class Page : System.Web.UI.Page
{
    public static string GetPath() { return Page.AppRelativeVirtualPath; }
}
Namespace Web.Pages
    Public Class Dir
        Inherits System.Web.UI.Page
        Public Shared Function GetPath() As String
            Dim page As Web.Pages.Dir = TryCast(System.Web.HttpContext.Current.Handler, Web.Pages.Dir)
            If (Page Is Nothing) Then Return "" Else Return page.AppRelativeVirtualPath
        End Function
    End Class
End Namespace
但我不能这样做,因为“AppRelativeVirtualPath”是非共享方法。 调用它的方法是什么

我需要一些能给我相同结果的东西:

在蒂姆的安塞尔之后编辑

我使用他的代码编写的特定类如下:

public class Page : System.Web.UI.Page
{
    public static string GetPath() { return Page.AppRelativeVirtualPath; }
}
Namespace Web.Pages
    Public Class Dir
        Inherits System.Web.UI.Page
        Public Shared Function GetPath() As String
            Dim page As Web.Pages.Dir = TryCast(System.Web.HttpContext.Current.Handler, Web.Pages.Dir)
            If (Page Is Nothing) Then Return "" Else Return page.AppRelativeVirtualPath
        End Function
    End Class
End Namespace
(在我希望解决的地方):

请参阅,上下文位于“MainPage”上,它在“Dir”页面上调用一个静态方法(“Dir”)以返回其ASP页面虚拟地址(即“~/content/Dir.aspx”)

如何实现这一点?

您可以使用从静态/共享上下文获取页面实例:

public static string GetPath() 
{  
    Page page = HttpContext.Current.Handler as Page;
    if (page != null)
        return page.AppRelativeVirtualPath;
    return null;
}
VB.NET:

Public Shared Function GetPath() As String
    Dim page = TryCast(HttpContext.Current.Handler, Page)
    If page IsNot Nothing Then
        Return page.AppRelativeVirtualPath
    Else
        Return Nothing
    End If
End Function

没用。“GetPath()”函数一直不返回任何内容。@SammuelMiranda:从哪里调用它?它必须来自实际的页面生命周期。不,我需要从另一个页面调用它-活动页面调用另一个类上的静态方法(这也是一个页面,但尚未联机)。@SammuelMiranda:那么它不应该返回null,因为“活动”页面将是
HttpContext.Current.Handler
。您使用过调试器吗?是的-您编写的函数没有错误,但它总是落在“ELSE”部分(返回NOTHING)。因为页面没有从trycast返回任何内容