如果没有自己解析ASPX页面,那么确定ASPX页面类的方法是什么?
在我们的项目中,我们使用VS2008中的Web项目(而不是Web站点类型或项目),这为我们提供了整个站点的单个DLL,这很棒。
现在我需要以编程方式确定ASPX站点的类。
我知道 ASPX类与aspx文件具有相同的名称(使用VS创建时),但是,文件名可能会在生产中重命名,因此会将此类代码吹到smitherins。
我们所有的ASPX页面都以基本的@Page指令开头:
<%@ Page ... Inherits="_CLASS_NAME_GOES_HERE_" %>
因此,如果没有自己解析指令,我还有其他选择吗?
已编辑添加:
因为我们使用第三方软件来管理我们的门户网站,所以它需要一定的条件。
我正在尝试创建一个自定义属性来将页面标记为门户网站的“安全”,因此页面之间的所有链接都需要通过需要分析目标页面是否安全的函数进行解析。
编辑澄清
我发现问题可能不像我想象的那么清楚,那么让我试着澄清一下:
假设我们有一个特定页面的相对URL,例如"~/destination.aspx"
我需要根据它的URL确定该页面的类。
答案 0 :(得分:2)
您可以在页面代码隐藏
中尝试此.GetType()答案 1 :(得分:1)
以下代码执行我认为您正在寻找的内容,但它使用的方法明确标记为“不打算直接在您的代码中使用”:
string path = "~/MyPage.Aspx";
IHttpHandler handler = System.Web.UI.PageParser.GetCompiledPageInstance(path, Server.MapPath(path), HttpContext.Current);
Response.Write(handler.GetType().BaseType.FullName);
输出:
MyApp.MyPage
你需要使用GetType()。BaseType,因为ASP.NET为每个.ASPX页面动态创建一个新类,它继承了代码隐藏类。
答案 2 :(得分:0)
如果您拥有所有“安全”的页面,也许您可以从具有所需信息的同一基类派生它们。然后你可以强制转向基地。如果失败了,那么你知道它不安全。