2008-09-24 6 views
0

나는이가장 좋은 방법

alt text

과 같이 구성되어 컨트롤을하고 난 수 있도록, 등 호출 마스터 페이지에 등록 된 자바 스크립트를 갖고 싶어 어디서나 이 컨트롤 폴더를 삭제하고 등록하면 js에 대한 URL을 찾는 방법을 알게됩니다. 여기

내가

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsClientScriptBlockRegistered("jqModal")) 
     Page.ClientScript.RegisterClientScriptInclude("jqModal", ResolveClientUrl("~js/jqModal.js")); 
    if (!Page.IsClientScriptBlockRegistered("jQuery")) 
     Page.ClientScript.RegisterClientScriptInclude("jQuery", ResolveClientUrl("~/js/jQuery.js")); 
    if (!Page.IsClientScriptBlockRegistered("tellAFriend")) 
     Page.ClientScript.RegisterClientScriptInclude("tellAFriend", ResolveClientUrl("js/tellAFriend.js")); 
} 

어떤 아이디어 (사용자 제어) 지금까지이 무엇인가?

public static class PageHelper { 
    public static void RegisterClientScriptIfNeeded(Page page, string key, string url) { 
     if(false == page.IsClientScriptBlockRegistered(key)) { 
      page.ClientScript.RegisterClientScriptInclude(key , ResolveClientUrl(url)); 
     } 
    } 
} 

을하거나 같은 일을 할 것입니다 페이지/webcontrol/UserControl을위한 몇 가지 기본 클래스에서 비슷한 인스턴스 메소드를 가질 수 있습니다

답변

1

당신은 정적 메소드와 헬퍼 클래스를 사용할 수 있습니다.

0

게시 한 이미지를 볼 수 없습니다.

또한 Context.Items를 사용하여 요청 당 한 번만 항목을 추가하고 컨트롤 자체를 통해 javascript를 렌더링 할 수 있습니다. 그러나 registerclient 스크립트도 훌륭하다고 생각합니다.

protected override void Render(HtmlTextWriter writer) 
    { 
     base.Render(writer); 
     string[] items = new string[] { "jqModal", "jQuery", "tellAFriend" }; 
     //Check if the Script has already been rendered during this request. 
     foreach(string jsFile in items) 
     {   
      if (!Context.Items.Contain(sjsFile)) 
      { 
       //Specify that the Script has been rendered during this request. 
       Context.Items.Add(jsFile,true); 
       //Write the script to the page via the control 
       writer.Write(string.Format(SCRIPTTAG, ResolveUrl(jsFile))); 
      } 
     } 
    }