在asp.net中获取从母版页到子版页的值

本文关键字:母版页 net asp 获取 | 更新日期: 2023-09-27 18:23:47

我有一个主页masterpage.master,在其中我将一个值存储在变量中

string Name = (string)(Session["myName"]);

现在我想在masterpage.master的子页面中使用"名称"中的值,但不在每个页面上使用会话。我能做到吗?如果是。。那么请告诉我。

我正在使用c#ASP.net网络表单

在asp.net中获取从母版页到子版页的值

您可以这样尝试:

   // Master Page File (Storing the value in label)
    string Name = (string)(Session["myName"]);
    lblmsg.Text= name;
   // cs File
    Label str = Master.FindControl("lblmsg") as Label;
    TextBox10.Text = str.Text ;

您可以将Name放在控件中,即MasterPage上的TextBox,并在这样的内容页面中找到它。

// On Master page
TextBox mastertxt = (TextBox) Master.FindControl("txtMaster");
// On Content Pages
lblContent.Text = mastertxt.Text;

有关它的更多详细信息,请查看MSDN

您可以从当前页面访问母版页,并将其转换为您的类类型:

MyMasterPage master = Master as MyMasterPage;
var value = master.NeededProperity;

在MSDN的评论中看起来像这样:

公共属性是一个很好的方法,但必须在每个内容页(.aspx文件)中放入MasterType指令。如果内容页扩展了基类(它扩展了Page),那么可以在基类CodeBehind中执行相同的强类型。例如:

    // MySiteMaster : System.Web.UI.MasterPagepublic
 string Message
    {
        get
        {
            return MessageContent.Text;
        }
        set
        {
            MessageContent.Text = value;
        }
    }
    // MyPage : System.Web.UI.Page
    MySiteMaster masterPage = Master as MySiteMaster;
    masterPage.Message = "Message from content page";

MessageContent是母版页上的控件。MyPage类可以将Message公开为自己的属性,或者允许派生类直接访问它。

将新的只读属性添加到母版页

public string MyName
{
    get { return (string)(Session["myName"]); }
}

在内容页面的页面声明后添加此代码(相应地更改母版页文件名和路径)

<%@ MasterType virtualpath="~/Site.master" %>

然后您可以从内容页面访问您的房产

var MyNameFromMaster = Master.MyName;

在aspx页面中使用masterpagetype指令,如下所示

  <%@ MasterType  virtualPath="~/Site.master"%>

现在您可以使用"master.[VariableName]"访问主页面的变量