Réponse à la question 1:
à mon humble avis, il n'a pas d'importance. Je dirais qu'il est plus propre d'utiliser Literal
lorsque vous n'avez pas besoin d'une étiquette pointant vers un champ d'un formulaire, mais, bien, la plupart des gens utilisent Label
dans tous les cas. Ou envoyez le texte directement avec <% %>
.
Réponse à la question 2:
Il n'y a pas besoin d'utiliser des sessions pour cela. Au lieu de cela, utilisez this.Master
pour accéder directement à la Masterpage. Vous pouvez ensuite mettre à jour la valeur de l'étiquette de votre page.
Par exemple, faire quelque chose comme:
public class SiteMaster : MasterPage
{
public string StatusText { get; set; }
}
et:
public class HomePage : Page
{
public void ChangeStatus(newStatus)
{
// Remember to cast this.Master to the class you use for the masterpage.
((SiteMaster)this.Master).StatusText = newStatus;
}
}
Pour répondre à vos dernières questions:
Ai-je besoin de copier ce code sur chaque page de mon site?
Oui.À moins que chaque page hérite d'une classe parente qui hérite de la classe Page
.
Qu'est-ce que SiteMaster?
SiteMaster
est la classe je ai donné à ma page principale. Il pourrait être Template
, Global
, ou tout ce que vous voulez.
S'il pourrait être utile, voici un exemple complet de la chose:
Fichier Site.master:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Demos.StackOverflow.MasterPages.SiteMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Sample code for StackOverflow</title>
</head>
<body>
<form id="form1" runat="server">
<a href="Default.aspx">Home page</a> | <a href="Products.aspx">Products</a>
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="Status">
<%= this.StatusText %>
</div>
</form>
</body>
</html>
Fichier Site.Master.cs:
namespace Demos.StackOverflow.MasterPages
{
using System;
using System.Web.UI;
// Here's my SiteMaster class.
public partial class SiteMaster : MasterPage
{
public string StatusText { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
Fichier PageWithStatus:
namespace Demos.StackOverflow.MasterPages
{
using System.Web.UI;
// This parent class inherits System.Web.UI.Page. This avoids code duplication.
public class PageWithStatus : Page
{
protected void ChangeStatus(string newStatus)
{
((SiteMaster)this.Master).StatusText = newStatus;
}
}
}
Fichier Default.aspx:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="Demos.StackOverflow.MasterPages.DefaultPage" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:Button runat="server" Text="Button" OnClick="DefaultButton_Click" />
</asp:Content>
Fichier Default.aspx.cs:
namespace Demos.StackOverflow.MasterPages
{
using System;
// Here, we inherits from PageWithStatus, not from Page.
public partial class DefaultPage : PageWithStatus
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DefaultButton_Click(object sender, EventArgs e)
{
this.ChangeStatus("Done!");
}
}
}
Fichier Products.aspx:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="Products.aspx.cs" Inherits="Demos.StackOverflow.MasterPages.ProductsPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:Button runat="server" Text="Buy" onclick="BuyButton_Click" /><br />
<asp:Button runat="server" Text="Sell" onclick="SellButton_Click" />
</asp:Content>
Fichier Products.aspx.cs:
namespace Demos.StackOverflow.MasterPages
{
using System;
// Here, we inherits from PageWithStatus, not from Page.
public partial class ProductsPage : PageWithStatus
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void BuyButton_Click(object sender, EventArgs e)
{
this.ChangeStatus("The product is purchased.");
}
protected void SellButton_Click(object sender, EventArgs e)
{
this.ChangeStatus("The product is sold.");
}
}
}
Le 'contrôle LABEL' représente l'élément html