从C#中的URL获取页面类型

时间:2012-05-10 19:47:28

标签: c# .net url-routing

给定一个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"

这可能吗?我怎么能这样做?

4 个答案:

答案 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");

https://forums.asp.net/t/1315395.aspx  这是我发现的。