2009-06-29 4 views
0

런타임보다는 디자인 타임에 aspx 페이지로 내보내지는 일부 자바 스크립트를 패키지하는 ASP.NET 서버 컨트롤을 만들 수 있습니까? "기본"자바 스크립트가있는 컨트롤을 만들려고합니다. RegisterClientScriptBlock을 사용하여 jvascript를 추가 할 수 있지만 웹 개발자는 javascript를 수정할 수 없습니다.이 시나리오에서는 디자인 타임을 사용할 수 없습니다. 웹 개발자가 컨트롤을 페이지에 떨어 뜨리면 자바 스크립트가 별도의 스크립트 태그에도 추가되도록 ToolBox 속성을 변경하는 방법이 있습니까?ASP.NET 서버 컨트롤에서 패키지 된 자바 스크립트를 페이지에 추가 하시겠습니까?

답변

0

이 작업을 수행해야 할 때 태그에 삽입 할 컨트롤의 속성을 만들고 웹 개발자는 필요한 모든 JS가있는 visibility none 및 viewstate가 비활성화 된 asp : literal 태그를 만듭니다.

페이지의 코드 뒤에 서버 컨트롤 속성에 리터럴 텍스트가 삽입됩니다.

<asp:Literal ID="Literal_HtmlHeader" runat="server" Visible="false" EnableViewState="false"> 
<script></script> 
<style></style> 
</asp:Literal> 

아마도 더 좋은 방법이있을 수 있습니다. 그러나 이것은 나를 위해 간단하고 효과적입니다.

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!String.IsNullOrEmpty(this.Literal_HtmlHeader.Text.Trim())) 
    { 
     //inject css and js into header. 
     Page.Header.Controls.Add(new LiteralControl(this.Literal_HtmlHeader.Text)); 

     // or add to your control cause it knows how to add the tags so there is no duplication. 
     ServerControl c = new ServerControl(); 
     c.HtmlHeaderCode = this.Literal_HtmlHeader.Text.Trim(); 
    } 

} 
관련 문제