2011-04-27 1 views
0

많은 자바 스크립트와 CSS를 사용하는 ASP.NET 사용자 지정 컨트롤에서 작업하고 있습니다. 유지 관리 목적으로 파일을 별도로 유지하는 것이 더 쉽습니다. 내 네임 스페이스를 선언하기 전에, 나는 다음과 같은 코드를 가지고 :ASP.NET Custom Control (C#)에서 RegisterClientScriptBlock을 통해 2 개의 스타일 시트를 등록 할 수 있습니까?

[assembly: WebResource("MyNamespace.Styles.colorbox.css", "text/css", PerformSubstitution = true)] 
[assembly: WebResource("MyNamespace.Styles.pagination.css", "text/css")] 

CSS의 파일은 하위 폴더라는 스타일에 분명하다. 완벽하게

// Register colorbox css 
cssColorbox = "<link href=\"" + Page.ClientScript.GetWebResourceUrl(typeof(DoctypeSelectorControl), "MyNamespace.Styles.colorbox.css") + "\" type=\"text/css\" rel=\"stylesheet\" />"; 
      this.Page.ClientScript.RegisterClientScriptBlock(typeof(DoctypeSelectorControl), "cssFile", cssColorbox, false); 

// Register pagination css 
cssPagination = "<link href=\"" + Page.ClientScript.GetWebResourceUrl(typeof(DoctypeSelectorControl), "MyNamespace.Styles.pagination.css") + "\" type=\"text/css\" rel=\"stylesheet\" />"; 
      this.Page.ClientScript.RegisterClientScriptBlock(typeof(DoctypeSelectorControl), "cssFile", cssPagination, false); 

첫 번째로드를하지만, 난 두 번째 (pagination.css)에 대한 링크가 표시되지 않는 : 나는 다음과 같은 코드를 사용하여 내 페이지하는 OnInit에이를 등록하기 위해 노력하고있어. 이 방법이 하나의 파일로 제한되는지 또는이 문제를 해결할 더 좋은 방법이 있는지 확실하지 않았습니다.

FYI : DoctypeSelectorControl은 분명하지 않은 클래스의 이름입니다.

도움 주셔서 감사합니다.

답변

1

내가 공유 코드 라이브러리로 내 CSS를 옮길 필요가있는 프로젝트에서 나는 비슷한 것을했다. 여러 파일을 삽입 할 수 있었지만 아래 코드는 내가 사용한 것에 대한 예입니다. CSS 파일을 임베디드 리소스로 지정하십시오.

 string cssColorbox = Page.ClientScript.GetWebResourceUrl(this.GetType(), 
      "MyNamespace.Styles.colorbox.css"); 

     string cssPagination = Page.ClientScript.GetWebResourceUrl(this.GetType(), 
      "MyNamespace.Styles.pagination.css"); 


     HtmlGenericControl colorboxCss = new HtmlGenericControl("link"); 
     colorboxCss.Attributes.Add("href", cssColorbox); 
     colorboxCss.Attributes.Add("type", "text/css"); 
     colorboxCss.Attributes.Add("rel", "stylesheet"); 


     HtmlGenericControl paginationCss = new HtmlGenericControl("link"); 
     paginationCss.Attributes.Add("href", cssPagination); 
     paginationCss.Attributes.Add("type", "text/css"); 
     paginationCss.Attributes.Add("rel", "stylesheet"); 


     Page.Header.Controls.Add(colorboxCss); 
     Page.Header.Controls.Add(paginationCss); 
1

실제 게시물에있는 귀하의 실제 문제는 귀하가 동일한 키를 사용했다는 것입니다. 이상하게도, 나는 두 번째가 첫 번째를 덮어 쓸 것으로 예상했을 것이다.

+0

RegisterClientScriptBlock이 등록 전에 키가 이미 있는지 확인하여 항상 첫 번째 항목을 유지하므로 두 번째 CSS가 첫 번째 항목을 덮어 쓰지 않습니다. – VSP