Abe*_*bel 11
你的意思是你想找到当前执行的对象的原始文件名?即,从你想要检索的控件MyControl里面MyControlOnDisk.ascx?通常,这些信息在编译时会丢失,而且,许多页面和控件都是基于部分类构建的,并且它们来自的文件名被编译成单个程序集.
对于页面,您可以使用以下内容,但仅当页面未在内部重定向时,才会从另一个页面实例化为类,它不是母版页,并且您不在静态方法中:
string currentPageFileName = new FileInfo(this.Request.Url.LocalPath).Name;
Run Code Online (Sandbox Code Playgroud)
在控制的情况下,据我所知,它通常是不可能的(它被编译掉了),但也许有人可以对此有所了解.
"我想写一个使用这个名字的超类"
我假设你的意思是写一个子类?如果你编写一个超类,你只需要创建一个虚方法,并在你的子类(页面)中实现它.如果您要创建子类,可以使用页面的类名,如下所示:
// current page
public partial class MyLovelyPage : System.Web.UI.UserControl
Run Code Online (Sandbox Code Playgroud)
并使用它来源于它:
public partial class NewDerivedPage : MyLovelyPage
Run Code Online (Sandbox Code Playgroud)
我会推荐一个替代方案:
Server.MapPath(Page.AppRelativeVirtualPath)
Run Code Online (Sandbox Code Playgroud)
这与 ASP.Net 一起使用来获取当前页面的完整路径和文件名。