0

データベースには、提供されるサイトに応じて Site.master に渡す必要がある一連のメタ タグ値があります。ページ読み込みイベントに BingMetaTag データベース フィールド値を含めるにはどうすればよいですか? コンテンツ属性値をデータベースからマスター ページのメタ タグに渡す必要があります。

Page_Load は次のとおりです。

 public partial class Site : System.Web.UI.MasterPage {
    protected DealerInformation objDealerInformation = null;
    protected DealerSite objDealerSite = null;
    protected ConnectionStringConfig dbConfig = null;

    protected void Page_Load(object sender, EventArgs e) {
        dbConfig = Session["DBConfig" + Request.Url.Host] as ConnectionStringConfig;
        objDealerInformation = CommonFunctions.GetDealerInformation(dbConfig);
        objDealerSite = Session["DealerSite" + Request.Url.Host] as DealerSite;

        try {
            imgGoogleAdServices.Src = string.Format(@"//googleads.g.doubleclick.net/pagead/viewthroughconversion/{0}/?value=0&label={1}&guid=ON&script=0;", objDealerSite.GoogleConversionID, objDealerSite.GoogleConversionLabelRemarketing);
        } catch {
            imgGoogleAdServices.Src = "";
        }
        try {
            WebEntitiesModel context = new WebEntitiesModel(dbConfig["WebConnection"]);
            String aspPage = HttpContext.Current.Request.Url.AbsolutePath.ToString().ToLower();
            MetaTag pageMetaTag = (from m in context.MetaTags
                                   where m.Page == aspPage
                                   select m).Single();


            Page.Title = (pageMetaTag.PageTitle != null ? pageMetaTag.PageTitle : "");
            Page.MetaKeywords = (pageMetaTag.MetaKeywords != null ? pageMetaTag.MetaKeywords : "");
            Page.MetaDescription = (pageMetaTag.MetaDescription != null ? pageMetaTag.MetaDescription : "");
        } catch {
            Page.Title = "";
            Page.MetaKeywords = "";
            Page.MetaDescription = "";
        }

別のデータベース テーブルからタイトル、メタ キーワード、およびメタ説明を既に取り込んでいることに注意してください。BingMetaTag の値を別のメタ タグ エントリとして追加するだけです。

4

1 に答える 1

2

MVCではなくWebFormsを使用しているようです。これにより、実際には少し簡単になります。

Site.masterファイル内:

<head>
    <meta id="someMeta" runat="server" name="something" value="" />
</head>

Site.master.csファイルのクラス:

protected HtmlGenericControl someMeta;

public String SomeMetaValue {
    get { return this.someMeta.Attributes["value"]; }
    set { this.someMeta.Attributes["value"] = value; }
}

あなたのページのクラスで

public void Page_Load(Object sender, EventArgs e) {

    SiteMaster master = (SiteMaster)this.Master;
    master.SomeMetaValue = "someValueFromDatabase";
}

プロジェクトに複数のタイプのマスターページがある場合、このコードは失敗するため、必要に応じて適切なガードとチェックを追加します。

于 2013-01-18T19:27:45.727 に答える