如何在后面的代码中找到(default.aspx)当前页面或Web控件的名称?
我想编写一个使用此名称的超类。
答案 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"]