如何在ASP.NET中找到当前页面的(文件)名称?

时间:2010-08-29 10:21:37

标签: c# asp.net

如何在后面的代码中找到(default.aspx)当前页面或Web控件的名称?

我想编写一个使用此名称的超类。

4 个答案:

答案 0 :(得分:11)

您的意思是您想要找到当前执行的对象的原始文件名?即,从控件MyControl中你想要检索MyControlOnDisk.ascx?通常,这些信息在编译时会丢失,而且,许多页面和控件都是基于部分类构建的,并且它们来自的文件名被编译为单个程序集。

对于页面,您可以使用以下内容,但仅当页面未在内部重定向时,才会将其从另一个页面实例化为类,它不是母版页,并且您不在静态方法中:< / p>

string currentPageFileName = new FileInfo(this.Request.Url.LocalPath).Name;

在控制的情况下,据我所知,它通常是不可能的(它被编译掉了),但也许有人可以对此有所了解。

  

“我想编写一个使用此名称的超类”

我认为你的意思是写一个子类?如果你编写一个超类,你只需创建一个虚方法,并在你的子类(页面)中实现它。如果您要创建子类,可以使用页面的类名,如下所示:

// current page
public partial class MyLovelyPage : System.Web.UI.UserControl

并像这样使用它来源于它:

public partial class NewDerivedPage : MyLovelyPage

答案 1 :(得分:4)

我会推荐一个替代方案:

Server.MapPath(Page.AppRelativeVirtualPath)

这适用于ASP.Net以获取当前页面的完整路径和文件名。

答案 2 :(得分:1)

如果您不使用路由:

string sPath = HttpContext.Current.Request.Url.AbsolutePath;
        string[] strarry = sPath.Split('/');
        int lengh = strarry.Length;
        string sRet = strarry[lengh - 1]; 

答案 3 :(得分:1)

Request.ServerVariables["SCRIPT_NAME"]