Ответ на вопрос 1:
ИМХО, это действительно не имеет значения. Я бы сказал, что удобнее использовать Literal
, когда вам не нужна метка, указывающая на поле формы, но в большинстве случаев большинство людей используют Label
Или выводите текст напрямую с помощью <% %>
.
Ответ на вопрос 2:
Нет необходимости использовать сеансы для этого. Вместо этого используйте this.Master
для прямого доступа к главной странице. Затем вы можете обновить значение метки со своей страницы.
Например, сделать что-то вроде:
public class SiteMaster : MasterPage
{
public string StatusText { get; set; }
}
и
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;
}
}
Чтобы ответить на ваши последние вопросы:
Нужно ли копировать этот код на каждую страницу моего сайта?
Да. Если каждая страница не наследуется от родительского класса, который наследуется от Page
класса.
Что такое SiteMaster?
SiteMaster
- это класс , который я дал моей главной странице. Это может быть Template
, Global
или , как вы хотите .
Если это может быть полезно, вот полный пример:
Файл 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>
Файл 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)
{
}
}
}
Файл 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;
}
}
}
Файл 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>
Файл 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!");
}
}
}
Файл 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>
Файл 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.");
}
}
}