Zugriff auf Properties einer MasterPage aus Contentpage

17/03/2009 - 16:02 von Andrej Golubew | Report spam
Hallo zusammen,

nach der Anleitung
http://www.csharpblog.de/tag/net-35/
habe ich geschafft, die Möglichkeit von Contenpage auf die Label in
Masterpage zu zugreifen.

Es funktioniert nur, wenn ich in Contentpage es:

Master.HeaderText =”Test”

in Ereignis „Page_Load“ ausführe.

Wenn ich es bei der Button_Click ausführe, klappt es nicht.

Hat jemand eine Idee, wie man es am besten machen kann?

Ich habe meine Anzeige von Fehler und Warnungen auf Masterpage eingebaut.
Wenn ein Fehler auf irgendeine Contentpage auftritt, soll es in Masterpage
angezeigt.

Vielen Dank.
 

Lesen sie die antworten

#1 Andrej Golubew
18/03/2009 - 15:08 | Warnen spam
Hier ist die Quellcode. Die Code wird in diese Reinfolge ausgeführt:
1. PageLoad - Content
2. PageLoad - Master
3. void Button1_Click(object sender, EventArgs e)

Deswegen habe ich keine gewünschte Ergebnis. Ich habe schon mit
SessionVariable probiert, leider gleiche Ergebnis.

Hier ist Quelcode:
DefaultMaster.master

<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="DefaultMaster.master.cs" Inherits="MasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xht...">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Unbenannte Seite</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Header" runat="server"></asp:Label>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>

DefaultMaster.master.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class MasterPage : System.Web.UI.MasterPage
{
private string headerText;

public string HeaderText
{
get { return headerText; }
set { headerText = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
if (HeaderText != null) Header.Text = HeaderText;
}
}


Default.aspx

<%@ Page Language="C#" MasterPageFile="~/DefaultMaster.master"
AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/DefaultMaster.master" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
<asp:Button ID="Button1" runat="server" Text="Button"
OnClick="Button1_Click" />

</asp:Content>


Default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class MasterPage : System.Web.UI.MasterPage
{
private string headerText;

public string HeaderText
{
get { return headerText; }
set { headerText = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
if (HeaderText != null) Header.Text = HeaderText;
}
}





"Stefan Falz [MVP]" wrote:

Hallo Andrej,

"Andrej Golubew" schrieb:

> Master.HeaderText =”Test”
>
> in Ereignis „Page_Load“ ausfà¼hre.
>
> Wenn ich es bei der Button_Click ausfà¼hre, klappt es nicht.

das dürfte hierbei nichts ausmachen und sollte in beiden Varianten
klappen.

> Hat jemand eine Idee, wie man es am besten machen kann?

Zeig mal bitte den Code dazu.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


Ähnliche fragen