2010-01-27 4 views

답변

2

이러한 경우 나는 보통 내 마스터 페이지의 태그에 ContentPlaceHolder를 추가합니다.

다른 방법 나는 그렇게 같은 ASP.Net 컨텍스트의 목록 저장을에 스크립트 문자열을두고 (보통 유틸리티 클래스 또는 PageBase 클래스의) 방법을 사용했습니다 : 그런 다음

  List<string> javaScriptUrls = new List<string>(); 

      url = url.ToLower(); 

      javaScriptUrls = Context.Items[JS_KEY] as List<string>; 

      if (javaScriptUrls == null) 
      { 
       javaScriptUrls = new List<string>(); 

       javaScriptUrls.Add(url); 
      } 
      else 
      { 
       if (!javaScriptUrls.Contains(url)) 
        javaScriptUrls.Add(url); 
      } 

      Context.Items[JS_KEY] = javaScriptUrls; 

OnPreRender 컨텍스트에서이 목록을 읽고 헤더의 태그를 만듭니다.

  List<string> _javaScript = Context.Items[JS_KEY] as List<string>; 

      foreach (string js in _javaScript) 
      { 
       HtmlGenericControl script = new HtmlGenericControl(); 
       script.TagName = "script"; 
       script.Attributes.Add("type", "text/javascript"); 
       if (js.StartsWith("~/")) 
        script.Attributes.Add("src", head.ResolveUrl(js)); 
       else 
        script.Attributes.Add("src", js); 

       head.Controls.Add(script); 

       AddHeaderLineBreak(head); 
      } 
+0

철저한 답변 주셔서 감사합니다. 이 해결 방법은 "IsClientScriptIncludeRegistered"를 사용할 수 없다는 것을 의미합니다. 목록에 URL을 계속 추가 한 다음 고유 항목 만 등록 할 수 있다고 가정합니다. –

+0

이 맞습니다. 다음 행을 확인하십시오. if (! javaScriptUrls.Contains (url.ToLower()) javaScriptUrls.Add (url); 목록에서 고유성을 유지합니다. – hunter

관련 문제