Page。标题与asp.net中的标题标记

我正在使用asp.net。 我注意到我们可以通过两种方式配置页面标题(静态和动态):

  1. 我们在page指令中有一个Title属性:

       
  2. 我们在页面中还有</code>标记: </p> <pre> <code><title id="MyTitle"> My Title

两者都可以在代码隐藏文件中访问:

  MyTitle.Text = "Title from Code behind"; Page.Title = "Page Title from CS"; 

我发现页面指令覆盖了html标题。 那么我们应该使用哪一个?为什么?

最大的区别在于,使用MyTitle.Text您必须使用id AND runat属性装饰Title元素,并记住它的名称,以便您可以引用它。 当你使用Masterpage时,从子页面访问这个值并不容易。

另一方面, Page.Title对每个页面都是通用的,所以在我看来它更普遍。 您将使用的每个新开发人员都不需要学习任何新东西,只需使用Page.Title格式即可。

所以我的投票将转到“传统的” Page.Title

无论你喜欢使用哪种,坚持下去,所以你不会混合各种方式设置标题。 这样您就不必担心首先发生的事件或您的同事覆盖您的价值观。

简短回答:(这取决于您的需求)。 我会解释一下。

  • 这取决于你的标题是否应该在运行时更改。

答案很长:

这是我的观察(通过一个小测试):

我在Page directive处设置了title

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Exampales_test" Title="ppppppppp" %>

我也通过html设置:

  ... fffffffff  

我有这个测试代码:

  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

页面确实有html标题值( ffffff

在此处输入图像描述

也是在PreInit结束时

在此处输入图像描述

调查OnInit表明它已经改变了(顺便说一句{如果你想知道在哪个阶段 - 这可以完成})到ppppppppp

在此处输入图像描述

当然,最后一个事件(在我们所讨论的内容中)是page_load :它确实改变了值:

在此处输入图像描述

价值是:

在此处输入图像描述

那么选择哪个?

如果您的代码正在动态更改Title (我的意思是在运行时 ),请不要使用html标记,也不要使用page指令。

例如,如果您的代码(例如)具有ASCX并且ACSX应该更改标题,那么只需使用代码(不是指令或html标记)。

正如你已经注意到的那样 - 获胜的价值是最后一个(时间轴)

它以html标记值开头,但随后服务器端代码开始激活并更改值。

这是一篇关于差异的好文章。 他们基本上做同样的事情。 这就是你想要做的事情。

虽然可以在ASP.NET网页中静态设置,但在许多情况下,标题取决于页面中显示的数据。 例如,某个网站可能有一个ShowProduct.aspx?ID = productID页面。 理想情况下, 的值不是使用静态 ,而是要查看的产品的名称(即ProductID等于通过查询字符串传递的productID值的产品)。 不幸的是,在ASP.NET版本1.x中,设置任何HTML元数据元素(例如 )需要开发人员在HTML标记中的适当位置添加Literal控件,然后在ASP.NET中以编程方式设置其值页面的代码隐藏类。

从这里复制http://www.4guysfromrolla.com/articles/051006-1.aspx