2009-12-10 2 views
1

최근에 ASP.NET AJAX 응용 프로그램으로 업그레이드했습니다. ASP.NET 테마에 두 개의 CSS 파일이 있습니다. 나는 포스트 백 당 css 중 하나를 조건에 따라 사용합니다. <head>을 ASP.NET AJAX에서 수정하십시오.

는 이전에 내 비 AJAX ASP.NET 응용 프로그램과 함께, 내가 무엇을 사용하는 것은

protected void Page_PreRender(object sender, 
            EventArgs eventArgs) 
    { 
     ControlCollection headCollection = Header.Controls; 

     for (int i = 0; i < headCollection.Count; i++) 
     { 
      Control temp = headCollection[i]; 
      if (temp is HtmlLink) 
      { 
       if (/* condition to loads a.css */) 
       { 
        if (((HtmlLink) temp).Href.EndsWith("a.css", true, null)) 
        { 
         headCollection.RemoveAt(i); 
         break; 
        } 
       } 
       else 
       { 
        if (((HtmlLink) temp).Href.EndsWith("b.css", true, null)) 
        { 
         headCollection.RemoveAt(i); 
         break; 
        } 
       } 
      } 
     } 
    } 

입니다하지만 ASP.NET AJAX로 마이그레이션 할 때이 코드 조각은 작동하지 않습니다. 나는 검사하여 첫 번째 요청에서로드 된 CSS 만 유지된다는 것을 알았습니다. 즉, 첫 번째 요청에서 a.css가로드 된 다음 b.css가 특정 다시 게시에서로드되어야하는 경우 작동하지 않습니다.

문제에 대해 혼란 스러우면 의견을 보내주십시오.

답변

1

감사합니다. Unholy, jQuery와 선택기를 사용하여 문제를 해결했습니다.

그냥이 사용 :

$("head > link[href$='a.css']").remove(); 
+0

올바른 답을 표시하는 것을 잊지 마십시오) –

1

나는 UpdatePanel을 사용한다고 생각합니다. 두 번째 다시 게시는 부분 렌더링 모드에서 실행됩니다. 이러한 포스트 백 중에 헤드 컨트롤을 변경할 수 없습니다. 그러나 ScriptManager : ScriptManager.RegisterStartupScript를 사용하여 시작 스크립트를 등록 할 수 있습니다. 그리고 자바 스크립트로 헤드 태그를 변경하십시오.

관련 문제