4

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

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

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

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

4

5 回答 5

4

你可以这样尝试:

   // 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 ;
于 2013-07-18T17:43:21.610 回答
3

您可以放入Name一个控件,即TextBox打开MasterPage并在这样的内容页面中找到它。

// On Master page
TextBox mastertxt = (TextBox) Master.FindControl("txtMaster");

// On Content Pages
lblContent.Text = mastertxt.Text;

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

于 2013-07-18T07:21:57.733 回答
1

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

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

现在您可以使用“Master.[VariableName]”访问母版页的变量

于 2013-07-18T08:56:21.337 回答
1

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

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

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

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

然后您可以从内容页面访问您的资源

var MyNameFromMaster = Master.MyName;
于 2013-07-18T07:38:08.033 回答
1

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

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

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

公共属性是一种不错的方法,但必须将 MasterType 指令放在每个内容页面(.aspx 文件)中。如果内容页面扩展了一个基类(扩展了 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 公开为它自己的属性或允许派生类直接访问它。

于 2013-07-18T07:24:06.880 回答