从父页面检查子页面名称
本文关键字:检查 | 更新日期: 2023-09-27 18:35:24
我有一个继承自Page的PageContext类。我得到了几个继承自PageContext的子类。在PageContext中,我得到了一个属性"权限"。我需要根据打开的子页面设置"权限"属性。
这是我的页面上下文
public class PageContext: Page
{
public string permission
{
get
{
switch ( the open child page)
{
case 'A':
return 'Read';
default:
return 'Read';
}
}
}
}
我可以在父类中实现这一点,还是必须在每个子页面中执行此操作?
我开发了与您的代码相同的代码来检查每个页面Page_Load的用户访问权限,如下所示:
所以我有一个基本的会员网页,如下所示:
public abstract class MemberWebPage : System.Web.UI.Page
{
public virtual bool AutorizeUser()
{
return false;
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
}
所有继承的页面都应该实现基本方法(AutorizeUser),例如:
public partial class UsersManagement :MemberWebPage
{
public override bool AutorizeUser()
{
EnteredUser up = (EnteredUser)Session["UserProfile"];
if (up == null)
Response.Redirect("../LogIn.aspx");
return up.HasAccess(PrimitiveActivity.UserManagement);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!AutorizeUser())
Response.Redirect("../Login.aspx");
}
}
我的 HasAccess 方法将检查用户从数据库访问!
但是我仍然不太确定您的代码,无论如何您可以按照以下步骤操作(这可能是一个解决方案):
1-将"页面名称"定义为页面上下文中的虚拟字符串,它将返回空
值2-每个派生类将覆盖页面名称
3-在PageContext中,"权限"属性将根据PageName返回
所以我们有:
public class PageContext : Page
{
public virtual string PageName
{
get
{
return null;
}
}
public string Permission
{
get
{
switch (PageName)
{
case "Page1":
return "Read";
case "Page2":
return "Write";
default:
return "None";
}
}
}
}
派生类只是例如:
public class Page1 : PageContext
{
public override string PageName
{
get
{
return "Page1";
}
}
}
public class Page2 : PageContext
{
public override string PageName
{
get
{
return "Page2";
}
}
}
public class Page3 : PageContext
{
}
最后你可以使用这样的东西:
string p1Permission = (new Page1()).Permission;//Read
string p2Permission = (new Page2()).Permission;//Write
string p3Permission = (new Page3()).Permission;//None
希望会有所帮助。