Pregunta

Estoy trabajando en una aplicación Silverlight donde quiero aprovechar la biblioteca del cliente Microsoft ASP.NET AJAX.Estoy llamando a la biblioteca usando HTML Bridge que forma parte de Silverlight 2.Silverlight obtuvo un gran soporte para pasar tipos entre JavaScript y código administrado, pero ahora me encontré con un problema.

Las bibliotecas cliente de Microsoft ASP.NET AJAX incluyen un "sistema de tipos" y una de las cosas que hace el marco es validar que los parámetros sean del tipo correcto.La función específica a la que estoy llamando es la Sys.Application.addHistoryPoint, y el código de validación se ve así:

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

Intenté pasar todo tipo de tipos CLR como parámetro de estado (estructuras C#, [ScriptableTypes], tipos de diccionario, etc.Y cada vez que me sale el error:

"Sys.ArgumentTypeException:El objeto de tipo 'Función' no se puede convertir al tipo 'Objeto'

Este error obviamente proviene de la validación de parámetros...Pero ¿POR QUÉ ASP.NET AJAX piensa que mis tipos son Funciones?¿Alguien entiende la validación de tipos en MS AJAX?

Sé que puedo hacer soluciones como llamar HtmlPage.Window.Eval("...") y pasar mi integración JS como cadenas, pero no quiero hacer eso.Quiero pasar un tipo .NET real como parámetro de estado.

¿Fue útil?

Solución

Encontré una descripción general bastante buena de esto. aquí, pero incluso esa descripción general parecía cubrir todos los escenarios excepto el que usted menciona.Me pregunto si esto no se puede hacer porque los objetos de JavaScript realmente son funciones (más o menos).

¿Qué pasaría si escribiera una función contenedora que pudiera crear el objeto de estado usando una cadena?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top