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

Ars*_*had 21 c# asp.net webforms

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

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

      <%@ Page Language="C#" Inherits="_Default"  Title="My Title" ......%>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我们<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

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

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

答案很长:

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

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

  • “哪个出现在最末端”并不重要,重要的是您实际使用了哪个。这是一个非常有缺陷的观点。您所展示的只是处理一个没有实际价值的 asp.net 页面的序列(除非您正在处理一个在一个应用程序中使用所有方法的精神分裂症患者)。设置标题的一种统一方式使您的“结论”无效...... (2认同)

wal*_*her 10

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

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

所以我的投票将转向"传统" Page.Title

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

  • @RoyiNamir,你知道这个问题没有明确的答案.两种选择都可以.我已经描述了两种变体,并说,我更喜欢.这有什么不好的?你真的想玩文字吗? (5认同)
  • 如果你想谈谈,我们在这里聊聊和许多热心人士.如果你觉得无聊,请随意使用它,因为这无处可去.没有任何建设性的东西来自你,你也不愿意正确阅读. (2认同)