2010-03-04 3 views
1

좋아, AJAXToolkit 컨트롤의 JQuery 버전을 두 개 만들고 (툴킷과 관련된 문제가 있음) 일반적인 버전의 스크립트는 페이지에 필요합니다.종속 된 컨트롤이 페이지에없는 경우 오류가 발생합니다.

이렇게하려면 JQueryControlManager 컨트롤을 사용하여 스크립트를 동적으로 삽입하는 것이 좋았습니다. 페이지의 컨트롤에 필요한 스크립트 만 사용하는 것이 좋습니다.

사람이하는 효율적인 방법을 알고 있나요 하십시오 ControlManager 컨트롤이 다른 JQueryControls는

  • 가 ControlManager 내에서 컬렉션에 각 컨트롤을 추가 할 경우 페이지에있는

    • 확인의 답을 가정 첫 번째 포인트는

    또는

    사람이을위한 제안이 않음 JQueryControlManager 인스턴스를 반환하지 않습니다 더 나은 해결책?

  • 답변

    1

    특히 스크립트의 경우 ASP.NET에는 수행하려는 작업을 지원하는 멋진 ScriptManager 클래스가 이미 있습니다.

    Page.ClientScript.RegisterClientScriptInclude(key, url); 
    

    으로 각 스크립트의 고유 키를 사용하여 컨트롤에서 가져 오면 프레임 워크에서 중복을 피할 수 있습니다. 유용한 다른 유용한 방법이 ClientScriptManager에 있습니다.

    ControlManager의 인스턴스를 만들어야하는 경우 Page.Controls 컬렉션을 통해 열거 할 수 있습니다. 즉, 해당 유형의 컨트롤을 찾고 있습니다.

    public ControlManager GetControlManager() 
    { 
        foreach (Control control in Page.Controls) 
        { 
         if (control is ControlManager) 
          return (ControlManager)control; 
        } 
    
        ControlManager manager = new ControlManager(); 
        Page.Controls.Add(manager); 
    
        return manager; 
    } 
    

    또는 당신은 Page.Items 사전에 ControlManager의 인스턴스를 저장하는 시도 할 수 있습니다.

    경고 : 경고 :이 코드를 테스트하지 않았으므로 의사 코드로 취급하십시오.

    +0

    Scriptmanager를 사용하는 것은 실제로 내가하는 일이 아닙니다. 스크립트를 가져 오는 영리한 작업을 계획하고 있으며 $ (function() {})을 사용하고 있습니다. Page.Controls를 반복 할 때, 이것은 매우 비효율적이며 (또한 Page.Controls를 반복적으로 반복해야 함) 페이지에서 관련 컨트롤이 50 개 이상있을 때 약간의 고통이 있습니다! Page.Items는 작동 할 수도 있지만 ... –

    +0

    성능이 문제라면 페이지. 항목이 더 좋을 것입니다. 재귀 적으로 반복 할 필요가 있는지 확신하지 못합니다. 컨트롤 계층 구조의 여러 수준에서 한 페이지에 여러 ControlManagers를 갖출 예정입니까? – EMP

    +0

    글쎄, 페이지의 최상위에 있지 않는 한 재귀가 필요합니다. 따라서 마스터 페이지를 사용하는 경우 문제가있을 수 있습니다. 저는 Page로갑니다 .Items [typeof (ControlManager)], 그것은 scriptmanager가하는 방법입니다. 그래서 나는 그것이 최선의 선택이라고 생각합니다. –

    관련 문제