每次加载页面时,我都需要将数据传递到母版页中的变量。
我在每个内容页面上设置了一个RequiredRoles的字符串[],用于定义访问该页面所需的角色。
在我的母版页上,我有一个获取此数组的方法,并检查当前用户是否属于这些角色中的一个或多个。
我将如何管理这个?我基本上希望每个页面都定义了一个String [] RequiredRoles,并且主页面将在每次调用时加载它,并检查用户是否在这些角色中。
答案 0 :(得分:24)
答案 1 :(得分:14)
Typecast Page.Master到您的母版页,以便您执行以下操作:
((MyMasterPageType)Page.Master).Roles = "blah blah";
答案 2 :(得分:10)
在母版页中创建一个属性,然后从内容页面访问它:
母版页:
public partial class BasePage : System.Web.UI.MasterPage
{
private string[] _RequiredRoles = null;
public string[] RequiredRoles
{
get { return _RequiredRoles; }
set { _RequiredRoles = value; }
}
}
内容页面:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load()
{
Master.RequiredRoles = new string[] { /*set appropriate roles*/ };
}
}
答案 3 :(得分:6)
我要为所有内容页面创建一个基类,例如:
public abstract class BasePage : Page
{
protected abstract string[] RequiredRoles { get; }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// display the required roles in a master page
if (this.Master != null) {
// value-assignment
}
}
}
然后我让每个页面都继承自BasePage,每个页面定义一个RequiredRoles
public partial class _Default : BasePage
{
protected override string[] RequiredRoles
{
get { return new[] { "Admin", "Moderator" }; }
}
}
这具有清洁和干燥OnLoad处理程序代码的优点。并且每个继承自BasePage的页面都需要定义“RequiredRoles”,否则它将无法编译。
答案 4 :(得分:0)
CType(Master.FindControl(" lblName"),Label).Text = txtId.Text CType(Master.FindControl(" pnlLoginned"),Panel).Visible = True