Page。标题与asp.net中的标题标记
我正在使用asp.net。 我注意到我们可以通过两种方式配置页面标题(静态和动态):
-
我们在page指令中有一个
Title
属性: -
我们在页面中还有
标记: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