2009-12-21 4 views
0

헤이 모든웹 응용 프로그램 아키텍처 (ASP.NET 3.5, 자바 스크립트)

배경 - 나는 나 클라이언트 측에서 일부 정보를 액세스 할 수 있도록 activx을 사용하고

,

activex 이벤트와 콜백을 사용하여 클라이언트 측에서 서버 측을 업데이트하고 있습니다.

모든 ActiveX 컨트롤의 이벤트를 등록하는 사용자 정의 컨트롤을 작성하여 이벤트 중 하나가 발생하면 해당 이벤트를 처리하는 서버에 대한 콜백이 발생합니다.

이 컨트롤을 기반으로 다른 사용자 컨트롤을 작성해야하므로이 사용자 컨트롤이 클라이언트 측에서 렌더링되는 모든 콜백에서이 컨트롤을 기반으로합니다.

내 질문은 -

이 이벤트를 처리 공유 인프라를 만들고 사용자 컨트롤에 대한 올바른 콘텐츠 기지를 렌더링하는 가장 좋은 방법은 무엇입니까? 내가 사용할 수있는 다른 방법이 있습니까?

감사합니다.


안녕하세요! 귀하의 빠른 답장을 보내 주셔서 감사합니다, 모두, 내가 개체 태그를 사용하여 액티브 X를 호출하고있어의

처음

HtmlGenericControl SkypeObject = new HtmlGenericControl("object"); 
    SkypeObject.Attributes.Add("id", "Skype"); 
    SkypeObject.Attributes.Add("codeBase", "http://ip/Skype4COM.dll"); 
    SkypeObject.Attributes.Add("classid", "clsid:830690FC-BF2F-47A6-AC2D-330BCB402664"); 
    SkypeObject.Attributes.Add("name", "Skype"); 

쓰기 콜백 : 다음

string SkypeAsyncCallbackOnEvent = ClientScript.GetCallbackEventReference(this, "values", ClientScriptName, "context", true); 

    string SkypeCallbackFunction = "\n<script>\n"; 
    SkypeCallbackFunction += "function SkypeCallback(values,context) {\n"; 
    SkypeCallbackFunction += SkypeAsyncCallbackOnEvent + "\n}\n"; 
    SkypeCallbackFunction += "</script>"; 

내가 active'x 이벤트를 등록 :

 string SkypeOnUserStatusChange = "\n<script for=\"Skype\" event=\"UserStatus(Status)\">\n"; 
    SkypeOnUserStatusChange += "var values = {\"StatusInfo\" : Status};\n"; 
    SkypeOnUserStatusChange += "var myArray = {\"key\" : \"Status\", \"values\" : values};\n"; 
    SkypeOnUserStatusChange += "var s=JSON.stringify(myArray);"; 
    SkypeOnUserStatusChange += "SkypeCallback(s,null);\n"; 
    SkypeOnUserStatusChange += "</script>"; 

이것은 내 기본 사용자 컨트롤 (즉)이므로 각 이벤트 콜백이 발생합니다. (현재이 클래스로 변경할 수 없음)

이제 클라이언트에서 데이터를 다시 표시 할 사용자 지정 컨트롤을 만들고 싶습니다.

제 의견으로는 자식 참조에있는 콜백 참조 클라이언트 스크립트를 변경하고 하위 컨트롤을 기본 컨트롤의 이벤트에 등록 할 수 있습니다.

어떻게 생각하십니까?

답변

0

:

덕분에 프로젝트에 조금 더 많은 정보를 원하시면 도움이 될 것입니다,하지만 난 당신이 잘 ... 논리/이벤트를 처리하는 두 가지 방법, 하나를 사용하여 제공 될 것이라고 생각 하나 실제로을 처리하기 위해 시각적 업데이트 - 중간에 접착제가있어 매력처럼 작동합니다.

먼저 이벤트가 발생했습니다. 내가 당신의 ActiveX 컨트롤을 등록하고 다양한 이벤트 처리기에 메서드를 바인딩하는 javascript 클래스를 일종의 상상할 수 있습니다. 이 클래스는 함수를 바인딩 할 수있는 메서드를 표시 논리에 콜백을 제공합니다.

둘째, jQuery와 같은 라이브러리를 사용하여 사용자 페이지 수정 작업을 수행하는 것이 좋습니다.

function eventTrap() {} 
eventTrap.prototype.hookActiveX() { // your code to attach to your activex object } 
eventTrap.prototype.register(event, callback) { // code to register for an event and callback } 

// actually use it... 
var trapObj = new eventTrap(); 
trapObj.hookActiveX(); 
trapObj.register("click", function(){alert('click');}); 
관련 문제