我不知道为什么这不起作用,但我在主页上有一个函数,它获取登录用户,然后在母版页上显示有关该用户的信息。我希望能够传递一个属性(用户角色到其他页面用于逻辑流。我似乎无法让内容页面识别属性。
错误消息是 'System.Web.UI.MasterPage'不包含'Role'的定义,也没有扩展方法'Role'接受类型为'System.Web.UI.MasterPage'的第一个参数'(你是否缺少using指令)或汇编参考?)'
有什么想法吗?
public partial class SiteMaster : System.Web.UI.MasterPage
{
private string role = "Manager";
public string Role
{
get
{
return role;
}
set
{
role = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
...get current logged in user data and display appropriate fields in the master page.
}
}
内容页面
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Portal.aspx.cs" Inherits="Portal" ClientIDMode="AutoID" %>
<%@ MasterType VirtualPath="~/Site.Master" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
内容page.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string testRole = Master.Role;
}
}
答案 0 :(得分:3)
Page上的“Master”属性返回System.Web.UI.MasterPage类型。在调用该类的函数之前,需要将其强制转换为特定类型(SiteMaster)。
SiteMaster siteMaster = Master as SiteMaster;
if (siteMaster != null) { myVar = siteMaster.Role; }
答案 1 :(得分:0)
您需要将Master转换为母版的类型 - SiteMaster ...
string testRole = ((SiteMaster)Page.Master).Role