私はasp.netを使用しています。ページタイトル(静的と動的の両方)を次の2つの方法で構成できることに気づきました。
ページディレクティブにTitle
属性があります。
<%@ Page Language="C#" Inherits="_Default" Title="My Title" ......%>
ページには<title>
tagもあります。
<title runat="server" id="MyTitle"> My Title</title>
どちらも分離コードファイルでアクセスできます。
MyTitle.Text = "Title from Code behind";
Page.Title = "Page Title from CS";
そして、私はページディレクティブがHTMLタイトルを上書きすることを発見しました。では、どちらを使用する必要がありますか。その理由は何ですか。
最大の違いは、MyTitle.Text
Title要素をid
AND runat
属性で装飾し、参照できるように名前を覚えておく必要があります。また、たとえばMasterpageを使用している場合、子ページからこの値にアクセスするのは簡単ではありません。
一方、 Page.Title
はすべてのページに共通なので、私の意見ではより普遍的です。新しい開発者は、Page.Title形式を使用するだけで、新しいことを学ぶ必要はありません。
だから私の投票は「伝統的な」Page.Title
どちらを使用してもかまいませんので、タイトルを設定するさまざまな方法を混在させることはありません。そうすれば、どのイベントが最初に発生するか、または同僚が値を上書きすることについて心配する必要はありません。
短い答え:(それはあなたのニーズに依存します)。説明します。
長い答え:
これが私の観察です(小さなテストで):
私は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>
私はこのテストコードを持っています:
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
を調査すると、alreadyが変更されていることがわかります({どの段階で正確に知りたい場合-これは可能です) })からppppppppp
そしてもちろん、最後のイベント(私たちが話し合ったものの中で)はpage_load
:です。これは値を変更します:
そして値は:
それでどちらを選ぶか?
コードがTitle
を動的に変更している場合(つまりruntime)、htmlマークアップもページディレクティブも使用しないでください。
例えば(たとえば)コードにASCXがあり、ACSXがタイトルを変更する必要がある場合は、コードを使用します(ディレクティブやHTMLマークアップではありません)。
あなたがすでに気づいたように-勝つ価値は最後に発生するものです(タイムライン)
Htmlマークアップ値で始まりますが、サーバー側のコードがアクティブになり、値を変更します。
ここに違いの良い記事があります。彼らは基本的に同じことをします。それはあなたがしたいことだけです。
<title>
はASP.NET Webページで静的に設定できますが、多くのシナリオでは、タイトルはページに表示されるデータに依存します。たとえば、WebサイトにShowProduct.aspx?ID = productIDページがある場合があります。静的<title>
を使用するのではなく、<title>
の値は、表示されている製品(つまり、ProductIDがクエリ文字列を通じて渡されたproductID値と等しい製品)の名前であることが理想的です。残念ながら、ASP.NETバージョン1.xでは、HTMLメタデータ要素(<title>
など)を設定するには、開発者がリテラルコントロールをHTMLマークアップの適切な場所に追加し、その値をプログラムでASPに設定する必要がありました。 .NETページの分離コードクラス。
ここからコピー http://www.4guysfromrolla.com/articles/051006-1.aspx