문제

저는 Microsoft ASP.NET AJAX 클라이언트 라이브러리를 활용하려는 Silverlight 응용 프로그램을 개발 중입니다.Silverlight 2의 일부인 HTML Bridge를 사용하여 라이브러리를 호출합니다.Silverlight는 JavaScript와 관리 코드 간의 유형 전달에 대한 뛰어난 지원을 받았지만 이제 문제에 부딪혔습니다.

Microsoft ASP.NET AJAX 클라이언트 라이브러리에는 "유형 시스템"이 포함되어 있으며 프레임워크가 수행하는 작업 중 하나는 매개 변수가 올바른 유형인지 확인하는 것입니다.내가 호출하는 특정 기능은 Sys.Application.addHistoryPoint, 유효성 검사 코드는 다음과 같습니다.

var e = Function.validateParams(arguments, [
    {name: "state", type: Object},
    {name: "title", type: String, mayBeNull: true, optional: true}
]);

모든 종류의 CLR 유형을 상태 매개변수(C# 구조체, [ScriptableTypes], 사전 유형 등)로 전달해 보았습니다.그리고 오류가 발생할 때마다:

"Sys.ArgumentTypeException:'Function' 유형의 개체를 'Object' 유형으로 변환할 수 없습니다.

이 오류는 분명히 매개변수 유효성 검사에서 발생합니다.그런데 ASP.NET AJAX는 왜 내 유형이 함수라고 생각합니까?MS AJAX의 유형 유효성 검사를 이해하는 사람이 있습니까?

전화하는 등의 해결 방법을 알고 있습니다. HtmlPage.Window.Eval("...") JS 통합을 문자열로 전달하지만 그렇게 하고 싶지는 않습니다.실제 .NET 유형을 상태 매개변수로 전달하고 싶습니다.

도움이 되었습니까?

해결책

나는 이것에 대한 꽤 좋은 개요를 찾았습니다. 여기, 하지만 그 개요조차도 당신이 언급한 시나리오를 제외한 모든 시나리오를 다루는 것 같았습니다.자바스크립트 객체가 실제로 (다소) 함수이기 때문에 이것이 가능하지 않은지 궁금합니다.

문자열을 사용하여 상태 객체를 생성할 수 있는 래퍼 함수를 ​​작성했다면 어떻게 될까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top