1

マスター ページにハードコードされたメタdescriptionとタグを更新する方法を探しています。keywords子ページの 1 つがこれら 2 つのメタ タグを動的に生成するため、これらを動的に追加したいと考えました。キーと説明をページに追加するために現在使用している子ページのコードを次に示します。

protected void Page_Load(object sender, EventArgs e)
{
    this.Page.Title = lblPackTitle.Text;
    System.Web.UI.HtmlControls.HtmlMeta metaTagKey = new System.Web.UI.HtmlControls.HtmlMeta();
    metaTagKey.Name = "Keywords";
    metaTagKey.Content = "This is my keyword text";
    this.Header.Controls.Add(metaTagKey);
    System.Web.UI.HtmlControls.HtmlMeta metaTagDesc = new System.Web.UI.HtmlControls.HtmlMeta();
    metaTagDesc.Name = "description";
    metaTagDesc.Content = "This is my description text";
    this.Header.Controls.Add(metaTagDesc);
}

正常に動作しますが、ここでの問題は、ページがレンダリングされるときに、ページの読み込み時に動的に追加された 2 つのdescription" " タグと 2 つkeywordの " " タグ (MasterPage (ハードコード) ともう 1 つ) が生成されることです。 .

それで、マスターページに既にある既存のメタタグを動的に更新する方法、またはマスターページのメタタグを削除して、子ページがレンダリングされるたびに動的に追加されたものだけを追加する方法はありますか?

私のプロジェクトは C# を使用した asp.net 3.5 にあります

4

3 に答える 3

2

さて、私は解決策を見つけました。レンダリング後は問題なく動作しているように見えるので、すべてのケースで問題なく動作することを願っています.

私のマスターページでは、ID を使用しdescriptionkeywordsタグを定義しました。つまりdesckeyその後、子ページの読み込みで次のようにしました。

protected void Page_Load(object sender, EventArgs e)
{
    this.Page.Title = lblPackTitle.Text;
    System.Web.UI.HtmlControls.HtmlMeta metaTagKey = new System.Web.UI.HtmlControls.HtmlMeta();
    metaTagKey.Name = "Keywords";
    metaTagKey.Content = "This is my keyword text";
    this.Header.Controls.Add(metaTagKey);
    System.Web.UI.HtmlControls.HtmlMeta metaTagDesc = new System.Web.UI.HtmlControls.HtmlMeta();
    metaTagDesc.Name = "description";
    metaTagDesc.Content = "This is my description text";
    this.Header.Controls.Add(metaTagDesc);
    //----------------------------Added here-----------------------------
    Control ctrlKeyMeta = this.Header.FindControl("key");
    Control ctrlDescMeta = this.Header.FindControl("desc");
    ctrlKeyMeta.Visible = false;
    ctrlDescMeta.Visible = false;
}
于 2013-04-30T09:18:50.190 に答える
0

促進の質問: これにより、ヘッダー セクション内の最後の項目としてメタ ディスクリプションが追加されます。トップではなくヘッド内で最後にすると、本当に違いがありますか?

      protected void Page_Load(object sender, EventArgs e)
    {
        HtmlHead header1 = (HtmlHead)Master.FindControl("head1");

        header1.Controls.Remove(header1.FindControl("desc1"));

        HtmlMeta description = new HtmlMeta();
        //System.Web.UI.HtmlControls.HtmlMeta description = new System.Web.UI.HtmlControls.HtmlMeta();

        description.Name = "description";
        description.Content = "We are a family owned and operated painting company. We serve homeowners in Northern Virginia and Washington DC";

        this.Header.Controls.Add(description);
    }
于 2014-07-12T21:33:27.417 に答える
0

メタ コンテンツ アイテムをデフォルト値を持つプロパティとして公開し、それに基づいてレンダリングします (実際、ページがプロパティを公開するため、これを行う必要さえありませんが、最上位のマスター デフォルトが必要になる場合があります。ページのプロパティに)。その後、ページはメタ要素なしで開始され、デフォルトのコンテンツが変更されていない場合は書き出されます。そうでない場合は、変更されたコンテンツが書き込まれます。

public MetaTitle { get; set; }
public MetaDescription { get; set; }
public MetaKeywords { get; set; }

...

var tag = new HtmlMeta();
tag.Name = "description";
tag.Content = MetaDescription;
this.Header.Controls.Add(tag);

プロパティは、リクエスト ライフサイクル パイプラインでさらに設定し、個々のページで上書きできます。重複なし。したがって、重要なのは、デフォルトをハードコードするのではなく、同じことの柔軟性とともにいくつかのデフォルトを提供することです。

于 2013-04-30T08:17:45.930 に答える