Ars*_*had 21 c# asp.net webforms
我正在使用asp.net.我注意到我们可以通过两种方式配置页面标题(静态和动态):
我们Title在page指令中有一个属性:
<%@ Page Language="C#" Inherits="_Default" Title="My Title" ......%>
Run Code Online (Sandbox Code Playgroud)我们<title>在页面中也有标记:
<title runat="server" id="MyTitle"> My Title</title>
Run Code Online (Sandbox Code Playgroud)两者都可以在代码隐藏文件中访问:
MyTitle.Text = "Title from Code behind";
Page.Title = "Page Title from CS";
Run Code Online (Sandbox Code Playgroud)
我发现页面指令覆盖了html标题.那么我们应该使用哪一个?为什么?
Roy*_*mir 11
简短回答:(这取决于您的需求).我会解释一下.
答案很长:
这是我的观察(通过一个小测试):
我设置title了Page directive :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Exampales_test" Title="ppppppppp" %>
我还设置了html:
<head runat="server" ID="hhh">
...
<title runat="server">fffffffff</title>
</head>
Run Code Online (Sandbox Code Playgroud)
我有这个测试代码:
protected override void OnPreInit(EventArgs e)
{
// <----- breakpoint here (A)
base.OnPreInit(e);
// <----- breakpoint here (B)
}
protected void Page_Load(object sender, EventArgs e)
{ // <----- breakpoint here (C)
this.Title = "cccccccc";
}
Run Code Online (Sandbox Code Playgroud)
视觉:

现在让我们看看:
当我按下Run:
页面确实有html标题值(ffffff)

也在最后 PreInit

调查OnInit它已经改变的节目(顺便说一句{如果你想知道究竟在哪个阶段 - 这可以完成}) ppppppppp

当然,最后一个事件(我们已经谈过的)是page_load:它确实改变了价值:

价值是:

那么选择哪个?
如果您的代码是Title动态更改的(我的意思是在运行时),请不要使用html标记,也不要使用page指令.
例如,如果您的代码(例如)具有ASCX并且ACSX应该更改标题,那么只需使用代码(非指令或html标记).
正如你已经注意到的那样 - 获胜的价值是最后一个(时间轴)
它以html标记值开头,但随后服务器端代码开始激活并更改值.
wal*_*her 10
最大的区别在于,MyTitle.Text您必须使用idAND runat属性装饰Title元素,并记住它的名称,以便您可以引用它.当你使用Masterpage时,从子页面访问这个值并不容易.
另一方面,Page.Title每个页面都是通用的,所以在我看来它更普遍.您将使用的每个新开发人员都不需要学习任何新内容,只需使用Page.Title格式即可.
所以我的投票将转向"传统" Page.Title
无论你喜欢使用哪种,坚持下去,所以你不会混合各种方式设置标题.这样您就不必担心首先发生的事件或者您的同事覆盖您的价值观.