给定一个URL,我必须能够知道该URL所在的页面类型是什么。例如,假设我有几页。
//first.aspx
public partial class FirstPage : System.Web.UI.Page { }
//second.aspx
public partial class SecondPage : MyCustomPageType { }
我希望能够以下列方式调用方法:
GetPageTypeByURL("first.aspx"); //"FirstPage"
GetPageTypeByURL("second.aspx"); //"SecondPage"
这可能吗?我怎么能这样做?
答案 0 :(得分:5)
从this answer开始,您可以获得特定网页的类。然后,您可以使用反射来确定其基本类型。 (注意:我没有尝试过,这只是一个建议。)
System.Web.Compilation.BuildManager.GetCompiledType(Me.Request.Url.AbsolutePath)
答案 1 :(得分:1)
这个怎么样?
public Type GetPageTypeByURL(string url)
{
object page = BuildManager.CreateInstanceFromVirtualPath(url, typeof(object));
return page.GetType().BaseType.BaseType;
}
<强>用法:强>
Type pageType = GetPageTypeByURL("~/default.aspx");
答案 2 :(得分:0)
只是一个想法: 我假设您从其他程序调用该页面。 获取HTML,搜索区分HTML /隐藏元素,告诉您页面是什么。 如果您在服务器上,只需将页面作为文本文件加载并阅读它。
答案 3 :(得分:0)
Page page = (Page)System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(url, typeof(Page));
CustomerPage page = (CustomerPage) SomeMagicalPageCreater.CreatePage("CustomerPage.aspx");