以前の ASP プログラムでは、Web ページのヘッダー情報を動的に出力するために Response.Write をよく使用していましたが、ASP.NET では、コードと UI の分離といういわゆる指導原則により、これを行う必要がなくなりました (もちろん、他の人が <title ranut="server" id="titleControl">デフォルト タイトル</title> を使用してタイトルを設定しているのを見たことがありますが、私はそうではありません。冗長な id=" titleControl" が生成されるため、これは非常に良いと思います。個人的には、冗長な文字が生成されないため、Literal コントロールを使用する方が良いと思います。js を使用してタイトルを動的に設定する人もいます:)。 、しかし、検索エンジンに何をさせるのですか?
ページのヘッド情報を動的に制御するのは実際には非常に簡単です: http://www.lvjiyong.com/demo/aspnet/setheader/。
デモは非常に簡単で、ソース コードをダウンロードして詳しく見ることができます。
主にリテラルと PlaceHolder が使用されています。
このメソッドは BasePage に配置されます。次に、WebForm に BasePage クラスを継承させるときに、このメソッドを呼び出して、PlaceHolder を使用してスタイル シートとスクリプトをロードします。
Literal を使用すると、テキスト情報を直接設定できます。使用する場合は、まず指定された Literal コントロールがあるかどうかをプログラムに調べさせ、存在する場合は Text を設定します。
/**//// <概要>
/// ヘッド情報を設定する
/// </概要>
/// <param name="_name">コントロール</param>
/// <param name="_control">テキスト</param>
private void setHeader(string _control, string _text)
{
リテラル obj = this.FindControl(_control) as Literal;
if(obj != null)
{
obj.Text = _text;
}
}
たとえば、Head 領域に <asp:Literal id="PageTitle" runat="server" /> を設定すると、次のようにタイトルを設定できます。 ここでは、まずメソッドを用意します。
/**//// <概要>
///Webページのタイトルを設定する
/// </概要>
/// <param name="_title">ウェブページのタイトル</param>
protected void SetTitle(string _title)
{
setHeader("PageTitle","<title>" + _title + "</title>");
WebFromでは次のようにタイトルを設定できます
this.SetTitle("ルーのブログ");
説明やキーワードなどのメソッドは同じですが、ここでは説明しません。
ここでは、js と css の読み込みについて説明します。 PlaceHolder コントロールを使用します。なぜリテラルの代わりにこれを使用するのでしょうか?
PlaceHolder は通常、位置を占有するだけなので、コントロールを動的にロードすることが容易になります。まず、指定された PlaceHolder コントロールも見つけます。
/**//// <概要>
/// LoadHeader の PlaceHolder コンテナを検索します
/// </概要>
/// <戻り値></戻り値>
プライベート コントロール findHeader()
{
return this.FindControl("LoadHeader");
}次に、コントロールを動的に追加します
/**//// <概要>
/// コントロールを PlaceHolder コントロールにロードします
/// </概要>
/// <param name="_obj"></param>
protected void LoadPlaceHolder(HtmlGenericControl _obj)
{
objHeader = findHeader() をコントロールとして
// スクリプト ファイルをロードします
。
if(objHeader != null)
{
objHeader.Controls.Add
(_obj);
CSS または JS を読み込むには、まず HtmlGenericControl を使用して子コントロールを作成し、それを PlaceHolder コントロールに追加します。
/**//// <概要>
/// 指定されたスタイルシートファイルを読み込みます
/// </概要>
/// <param name="_cssPath">スタイルシート ファイルのアドレス</param>
protected void LoadCss(string _cssPath)
{
HtmlGenericControl objCss = new HtmlGenericControl("link");
objCss.Attributes["rel"] = "スタイルシート";
objCss.Attributes["type"] = "テキスト/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["メディア"] = "画面";
this.LoadPlaceHolder(objCss);
}
WebForm にスタイルシートをロードしたいときは、次のようにするだけです。
this.LoadCss("Style Sheet Address"); これは js をロードするのと同じです。ここ
では説明しませんが、ここで説明した関数よりも少し優れています。あなた自身。