我希望能够确定在给定URL的情况下将调用哪个类。
例如,
我有一个页面/First.aspx,它有一个指向/Second.aspx的超链接
在First.aspx.cs背后的代码中,如果有人点击指向/Second.aspx的超链接,我希望能够确定将执行哪个类。
编辑: 其中一个转发器让我概述了我正在努力解决的问题。这是:
我继承的代码库有一个子类System.Web.UI.Page,它有一个返回布尔值的公共Authorized方法。 Authorized方法检查通过查询字符串传递给经过身份验证的用户的参数,并确定是否应允许该用户使用给定参数调用该页面。
在网站的其他地方,我有引用这些受保护页面的超链接。在某些情况下,这些链接会显示给未被授权导航到该页面的用户。他们可以点击链接,但是他们会收到错误。在其他情况下,以前的开发人员在插入逻辑时遇到麻烦,为那些未经授权的用户隐藏了超链接,但授权逻辑是重复的(在页面本身和链接页面中)。
我想要做的是创建超链接类的子类,让子类检查NavigateUrl,确定目标页面类,并调用该类的Authorized方法以确定用户是否有权调用该类页。如果用户未进行授权,则链接将自动隐藏。
答案 0 :(得分:2)
您可以使用BuildManager.CreateInstanceFromVirtualPath
从虚拟网址构建网页,然后您可以抓取类型,如下所示:
var page = BuildManager.CreateInstanceFromVirtualPath("~/Second.aspx", typeof(Page));
var type = page.GetType();
即使您在方法中传递typeof(Page)
,类型仍然是您网页的类型,如下所示:MyNamespace.Second
答案 1 :(得分:0)
嗯,你可以
<%@ Page ... %>
指令和Inherits="..."
属性的值。然而,做这样的事情感觉非常错误。你想要解决的真正问题是什么?也许有一种更简单的方法,不涉及这种低级文件操作......