【问题标题】:How to pass a value from Master page to content page in asp.net 4如何将值从母版页传递到 asp.net 4 中的内容页
【发布时间】:2011-09-26 21:28:31
【问题描述】:

我不知道为什么这不起作用,但我在母版页上有一个功能,它可以获取登录用户,然后在母版页上显示有关该用户的信息。我希望能够将一个属性(用户角色传递给其他页面以用于逻辑流。我似乎无法让内容页面识别该属性。

错误信息是 'System.Web.UI.MasterPage' 不包含'Role' 的定义,并且找不到接受'System.Web.UI.MasterPage' 类型的第一个参数的扩展方法'Role'(您是否缺少 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" %>

内容页面.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {

           string testRole = Master.Role;

        }
    }

【问题讨论】:

标签: asp.net master-pages


【解决方案1】:

Page 上的“Master”属性返回 System.Web.UI.MasterPage 类型。您需要先将其转换为您的特定类型(SiteMaster),然后才能调用该类的函数。

SiteMaster siteMaster = Master as SiteMaster;
if (siteMaster != null) { myVar = siteMaster.Role; }

【讨论】:

  • 我几乎在发布答案的同时就想通了。和往常一样,你们摇滚。
【解决方案2】:

您需要将 Master 转换为母版页的类型 - SiteMaster...

string testRole = ((SiteMaster)Page.Master).Role

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多