2013-01-18 2 views
0

우리 사이트에는 서비스중인 사이트에 따라 Site.master에 전달되어야하는 일련의 메타 태그 값이 데이터베이스에 있습니다. 페이지로드 이벤트에 BingMetaTag 데이터베이스 필드 값을 포함시키는 방법은 무엇입니까? 마스터 페이지의 메타 태그에 데이터베이스의 content 속성 값을 전달해야합니다. 다음과 같이데이터베이스에서 Site.Master에 동적 메타 태그를 추가하는 방법은 무엇입니까?

를 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의 값을 별도의 메타 태그 항목으로 추가하기 만하면됩니다.

답변

2

MVC가 아닌 WebForms를 사용하는 것처럼 들리지만 실제로는 약간 더 쉽습니다. 당신의 Site.master.cs 파일의 클래스에서

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

: 당신의 Site.master 파일에서

페이지의 클래스

public void Page_Load(Object sender, EventArgs e) { 

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

에서

protected HtmlGenericControl someMeta; 

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

이 여러 개있는 경우 프로젝트의 마스터 페이지 유형을 선택하면이 코드가 실패하므로 필요에 따라 적절한 경비원과 수표를 추가하십시오.

+0

+1하지만 마스터 페이지에서 그렇게하는 것이 더 쉽기 때문에 한 번만 수행하면됩니다. – MikeSmithDev

+0

WebForms에서 MasterPage 자체의 논리가 없어야한다고 생각합니다. Page 클래스는 컨트롤러 역할을해야합니다. – Dai

관련 문제