2011-01-30 3 views
4

사용자 컨트롤이 UpdatePanel 안에 있습니다. 이벤트가 트리거되고 사용자 정의 컨트롤을 업데이트하면 CSS 스타일이 손실됩니다. 크롬과 FF에서는 IE8에서만 나에게 이런 일이 일어났습니다. 예UpdatePanel 내부의 사용자 컨트롤 - 업데이트시 CSS 스타일이 사라졌습니다 (IE8)

사용자 컨트롤 :

<style type="text/css"> 
    div.test 
    { 
     width: 500px; 
     height: 400px; 
     background-color: #0000BB; 
     color: #FFFFFF; 
     border: 2px solid #11CC00; 
    } 
</style> 
<div id="div123" runat="server" class="test"></div> 

public void SetText(string text) 
{ 
    div123.InnerText = text; 
} 

UpdatePanel 내부의 사용자 제어를 이용하고 업데이트하는 페이지 (버튼

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate> 
    <div id="div1" runat="server"> 
     <uc:TestUC ID="test1" runat="server"></uc:TestUC> 
    </div> 
    <asp:Button ID="Button1" runat="server" OnClick="Button1_OnClick" Text="Click" /> 
</ContentTemplate> 
</asp:UpdatePanel> 

protected void Button1_OnClick(object sender, EventArgs e) 
{ 
    test1.SetText(DateTime.Now.ToString()); 
} 
크롬

하고 예상대로 작동하는 것 FF 클릭하면 현재 시간이 사용자 정의 컨트롤에 표시되고 다른 것은 발생하지 않음) IE8에서는 사용자 정의 컨트롤 내의 div가 스타일 (배경색, 테두리)을 잃습니다.

이 문제의 원인은 무엇이고이를 막기 위해 무엇을 할 수 있습니까?

+0

예를 들어 설명하기가 어렵지만 UserControl 내에 정의 된 CSS는 무엇입니까? 그렇다면 외부로 이동하거나 UpdatePanel을 UserControl에 넣을 수 있습니까? – Jemes

+0

예, CSS는 UserControl 내에 정의되어 있지만 필요합니다. – Kuzco

+0

IE11 호환 모드로 WebControl에서 동일한 동작을 얻습니다. 인라인 "스타일"섹션은 사라지고 외부 CSS의 "링크 rel"및 외부 JavaScript의 "스크립트"태그도 사라집니다. 각 태그에 "id"를 추가하려고 시도했지만 성공하지 못했습니다. – Elo

답변

3

이 문제는 here입니다.

나는 OnInit에 CSS 링크를 등록하는 제안을 시도했지만 제대로 작동하는 것 같습니다.

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 
    ScriptManager sm = ScriptManager.GetCurrent(Page); 
    if (!sm.IsInAsyncPostBack) 
    { 
     string css = string.Format("<link rel=\"stylesheet\" href=\"{0}\" type=\"text/css\" />", ResolveUrl(CssClassFile)); 
     ScriptManager.RegisterClientScriptBlock(this, typeof(MyBlahControl), "MyBlahId", css, false); 
    } 
} 
+1

* *는 HTML 마크 업이면 "스크립트"입니까? 조금은 울기를 원합니다. 이 해킹은 하루 종일 작업을 중단시킬 수 있습니다. –

1

나는 비슷한 문제가 있었다.
나는 <page>에서 <header>으로 CSS <link ..을 옮겼습니다.

: 나는 MasterPage를 사용하고 난 모든 페이지에있는 링크를 원하지 않기 때문에

, 나는 MasterPage의 헤더에 다음

<head id="Head1" runat="server"> 
    ... 
    <asp:ContentPlaceHolder ID="HeaderContentPlaceHolder" runat="server"/> 
</head> 

하고 원하는 페이지 내 링크를의 ContentPlaceHolder를 넣어 유용하다고

<asp:Content ID="Content2" ContentPlaceHolderID="HeaderContentPlaceHolder"  Runat="Server"> 
    <link rel="stylesheet" type="text/css" href="CSS/my.css" /> 
</asp:Content> 
0

CSS를 사용자 컨트롤에서 페이지로 복사하면 문제를 해결할 수 있습니다.

0

내 응용 프로그램에서 동일한 문제가 발생하여 동적 패널의 모든 스타일을 제거하는 것처럼 보였습니다 ... 동적 위치 HTML (동적 HTML 작성 위치)을 이동하여 < head> 태그에 수정했습니다. 내 마스터 페이지.

실무! 모두 감사합니다 :)

관련 문제