2010-02-01 9 views
0

웹 페이지가 여러 개 있습니다. 모든 페이지에서 사용하는 4 개의 마스터 페이지가 있습니다. 각 페이지는 다른 CSS를 사용하며 JavaScript는 헤드 태그 내부에 포함됩니다. 데이터베이스 테이블을 참조 할 클래스에 대한 호출을 통해 제목, 메타 설명 및 메타 키워드 태그를 추가하고 싶습니다. 그러나 오류가 발생하지 않고 페이지 또는 HthmlHead 객체를 클래스에 전달하는 방법을 알 수 없습니다. 나는 페이지 나 HtmlHead 유형 내가 무엇을하고 있었는지에 따라 반환하는 내 클래스 HeaderText.getHeaderText을 변경 두 경우 모두클래스 내에서 HtmlHead 객체에 여러 요소 추가

HtmlHead head = Page.Header; 
Page.Controls.Remove(Page.FindControl("HeadElement")); 
Page.FindControl("HtmlElement").Controls.AddAt(0,HeaderText.getHeaderText(head, Request.Url.AbsolutePath)); 

Page = p2 
Page = HeaderText.getHeaderText(p2, Request.Url.AbsolutePath)); 

을하고 노력했다. 다음과 같이 클래스를 설정했습니다.

public class HeaderText 
    { 
     private HeaderText() { } 

     public static HtmlHead getHeaderText(HtmlHead head, String URL) 

더 좋은 방법이 있나요?

+0

나는 비슷한 질문에 답했다. 도움이 될지 알려주세요. http://stackoverflow.com/questions/2146092/is-there-a-system-web-ui-clientscriptmanager-method-that-registers-scripts-inside/2146871#2146871 – hunter

답변

1

당신은이 두 가지 제안 중 하나를 시도해 볼 수도 있습니다 :

1)하지가 RUNAT = "서버" 속성이 마스터 페이지는 모두 가하는 태그의 내부에 존재하는 HeadContentPlaceHolder이 있는지 확인하십시오. 그렇다면 여가 시간에 그 내용을 조작 할 수 있습니다. 당신이 있다면

<head> 
    <link ....> 
    <script....> 
    <meta......> 
    <asp:ContentPlaceHolder runat="server" ID="headContentPlaceHolder"></asp:ContentPlaceHolder> 
</head> 

또한 각 페이지

2)에서 쉽게 제목을 설정합니다 Page.Title을 사용할 수는

<%@ MasterType TypeName="My.App.MasterPage" %> 

그래서 각 콘텐츠 페이지에 MasterType 참조를 사용 마스터 페이지 클래스의 "SetHeaderElements"메서드를 정의한 경우 해당 MasterType이 정의 된 각 콘텐츠 페이지에서 호출 할 수 있습니다.

Page.Master.SetHeaderElements(meta, css, js); 

또한 그런 다음 IMasterPage 상기 SetHeaderElements와 인터페이스() 메소드를 생성이

public class PageBase : Page 
{ 
    public IMasterPage MasterPage { get { return Page.Master as IMasterPage; }} 
} 

처럼 마스터 페이지를 반환하는 PageBase 클래스를하여 콘텐츠 페이지의 각이 코드를 피하기 위해 노력하고 있습니다 각 MasterPage 클래스에서이 인터페이스를 구현하도록하십시오.

관련 문제