对问题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
是班级吗
我
给了我的主页。可能是
Template
,
Global
,或
你想要什么都行
.
如果有帮助的话,这里有一个完整的例子:
文件
站点.主
:
<%@ 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>
文件
站点.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)
{
}
}
}
文件
页面状态
:
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;
}
}
}
文件
默认.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>
文件
默认.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!");
}
}
}
文件
产品.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>
文件
产品.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.");
}
}
}