24

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

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

      <%@ Page Language="C#" Inherits="_Default"  Title="My Title" ......%>
    
  2. 我们<title>在页面中也有标签:

    <title runat="server" id="MyTitle"> My Title</title>
    

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

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

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

4

3 回答 3

13

最大的不同是MyTitle.Text你必须用idANDrunat属性装饰 Title 元素,并记住它的名称,以便你可以引用它。例如,当您使用 Masterpage 时,从子页面访问此值也不是那么容易。

另一方面,Page.Title每个页面都是通用的,所以在我看来它更普遍。与您合作的每个新开发人员都无需学习任何新内容,只需使用 Page.Title 格式即可。

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

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

于 2013-10-07T12:09:01.840 回答
11

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

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

长答案:

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

我设置titlePage 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>

我有这个测试代码:

 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 标记值开始,但随后服务器端代码开始激活并更改值。

于 2013-10-07T13:02:12.200 回答
0

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

虽然<title>可以在 ASP.NET 网页中静态设置,但在许多情况下,标题取决于页面中显示的数据。例如,一个网站可能有一个 ShowProduct.aspx?ID=productID 页面。<title>理想情况下,与其使用 static ,不如使用 <title>正在查看的产品的名称(即 ProductID 等于通过查询字符串传递的 productID 值的产品)。<title>不幸的是,在 ASP.NET 版本1.x中,设置任何 HTML 元数据元素(如 课后。

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

于 2013-10-07T12:12:08.697 回答