24

私はasp.netを使用しています。ページ タイトル (静的および動的の両方) を 2 つの方法で構成できることに気付きました。

  1. Titlepage ディレクティブに次の属性があります。

      <%@ 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

最大の違いは、 Title 要素をAND属性でMyTitle.Text装飾し、参照できるようにその名前を覚えておく必要があることです。また、たとえば Masterpage を使用している場合、子ページからこの値にアクセスするのはそれほど簡単ではありません。idrunat

一方、Page.Titleはすべてのページに共通しているため、より普遍的だと思います。あなたが一緒に仕事をするすべての新しい開発者は、新しいことを学ぶ必要はありません。Page.Title 形式を使用するだけです..

したがって、私の投票は「伝統的な」に行きますPage.Title

タイトルの設定方法が混在しないように、どちらを使用しても構いません。そうすれば、どのイベントが最初に発生するか、または同僚が値を上書きすることを心配する必要がなくなります。

于 2013-10-07T12:09:01.840 に答える
11

短い答え:(それはあなたのニーズに依存します)。説明します。

  • 実行時にタイトルを変更する必要があるかどうかによって異なります。

長い答え:

これが私の観察です(小さなテストで):

に設定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変更されている番組を調査する({どの段階で正確に知りたい場合-これを行うことができる}という方法で) ppppppppp

ここに画像の説明を入力

そしてもちろん、最後のイベント (これまでに説明したことの中で) はpage_load: であり、値を変更します:

ここに画像の説明を入力

値は次のとおりです。

ここに画像の説明を入力

では、どちらを選択しますか?

コードがTitle動的に変更されている場合 (実行時に意味します)、html マークアップも page ディレクティブも使用しないでください。

たとえば、コードに (たとえば) ASCX があり、ACSX が title を変更する必要がある場合は、コードを使用します (ディレクティブや html マークアップではありません)。

すでに気づいたように、勝つ値は最後に発生したものです(タイムライン)

これは html マークアップ値で始まりますが、サーバー側のコードがアクティブになり始め、値が変更されます。

于 2013-10-07T13:02:12.200 に答える
0

ここに違いに関する良い記事があります。彼らは基本的に同じことをします。重要なのは、あなたが何をしたいかだけです。

<title>ASP.NET Web ページで静的に設定できますが、多くのシナリオでは、タイトルはページに表示されるデータに依存します。たとえば、Web サイトに ShowProduct.aspx?ID=productID ページがあるとします。<title>の値は、static を使用するのではなく、 <title>表示されている製品の名前にするのが理想的です (つまり、クエリ文字列を介して渡された productID 値と等しい ProductID を持つ製品)。残念ながら、ASP.NET バージョン 1.x では、HTML メタデータ要素 ( など <title>) を設定するには、開発者が HTML マークアップの適切な場所にリテラル コントロールを追加し、ASP.NET ページのコードでプログラムによってその値を設定する必要がありました。クラスの後ろ。

ここからコピー http://www.4guysfromrolla.com/articles/051006-1.aspx

于 2013-10-07T12:12:08.697 に答える