【问题标题】:Get Page's Type from URL in C#从 C# 中的 URL 获取页面的类型
【发布时间】:2012-05-10 19:47:28
【问题描述】:

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

这可能吗?我该怎么做?

【问题讨论】:

  • FirstPage 的类型是FirstPageSecondPage 的类型是 SecondPage。您正在寻找它们直接继承的类型。
  • 从外部通过 URL 观察页面是不可能的。 为什么你需要这个 - 我确信有更好的方法
  • @Oded 好点。我会更新我的问题。
  • @BrokenGlass 你是对的。这很不寻常,我承认这一点。我试图能够推断网站某些部分的某些属性来自定义网站的导航。这是一个我正在开发的旧网站,我尽量不重写网站的大部分内容以适应我正在添加的新功能。

标签: c# .net url-routing


【解决方案1】:

this answer看来,您可以获取特定页面的类。然后,您可以使用反射来确定其基本类型。 (注意:我没有尝试过,这只是一个建议。)

System.Web.Compilation.BuildManager.GetCompiledType(Me.Request.Url.AbsolutePath)

【讨论】:

  • 哇。我真的不希望这是可能的,但这似乎正是我想要的。谢谢!
【解决方案2】:

这个怎么样?

public Type GetPageTypeByURL(string url)
{
    object page = BuildManager.CreateInstanceFromVirtualPath(url, typeof(object));
    return page.GetType().BaseType.BaseType;
}

用法:

Type pageType = GetPageTypeByURL("~/default.aspx");

【讨论】:

  • 这看起来很有希望,但 Rob 的回答更简洁一些。我将不得不多看看BuildManager 课程。看起来它做了一些非常有趣的事情。
【解决方案3】:

只是一个想法: 我假设您从其他程序调用该页面。 获取 HTML,搜索您的区别 HTML/隐藏元素,告诉您页面是什么。 如果您在服务器上,只需将页面加载为文本文件并阅读即可。

【讨论】:

    【解决方案4】:
    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 这是我发现的。

    【讨论】:

    • 尝试更清楚地解释为什么这是问题的答案
    • 另外,SomeMagicalPageCreater 是什么?
    • 您好,请详细解答,您可以阅读How to Answer获取建议。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2011-08-31
    • 2019-03-06
    • 2020-10-03
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多