multiple knockout for data knockout.js asp.net-mvc-4 upshot

knockout.js - for - Upshot MVC 4 manejo de fecha, enlaces knockout



knockout js data bind text (1)

¿Cómo maneja upshot.js los objetos DateTime?

Como parece, solo está creando cadenas "normales" y no está creando un objeto de fecha JS real.

Todos los problemas relacionados con el formato de fecha JSON y MVC se analizan aquí: Manejo de fechas con Asp.Net MVC y KnockoutJS

Incluso después de cambiar el formateador JSON predeterminado de MVC a JSON.Net, aún no se está realizando una conversión automática hasta la fecha. Desafortunadamente, todas las vinculaciones deben hacerse "por mano" para crear un objeto Date internamente. Con la fecha formateada JSON.Net a la nueva fecha (cadena), el enfoque parece funcionar bien, ya que el constructor es capaz de manejar la cadena de formato de fecha perfecta.

¿Hay una lib "general" disponible para manejar todos los diferentes tipos de valores en enlaces para knockout?


Esta es una historia antigua, debido al hecho de que json no tiene un formato predeterminado para las fechas. Además, el formato /Date(.....)/ fingido por .Net (.Net no solo asp.net) no es fácil de manejar también con la personalización json permitida por todos los navegadores modernos:

  1. El primer problema es que el formato /Date(.....)/ no es entendido por la función de análisis json del navegador. Esto se resuelve fácilmente personalizando el análisis Json. Hay muchos parches en la red.
  2. Tiene el mismo problema cuando devuelve la fecha al servidor. Sin embargo, en este caso es muy difícil realizar parches porque, si bien el método JSON.stringify acepta una función para personalizar la serialización json, si pasa una función que transforma cada fecha en la cadena "/Date(.....)/". ..entonces la función stringify ADD furteh / y la transforma en: "/ / Date (.....) / /", es decir escapa del / char .... pero la cadena transformada de esta manera no es entendida por punto net. Por otro lado, si transforma las fechas en /Date(.....)/...no se agrega el carácter de escape así que ... también en este caso obtendrá una codificación incorrecta.
  3. Además, si resuelve los problemas anteriores ... después de un servidor / cliente / servidor de ida y vuelta, la fecha devuelve cambios. Específicamente, el desplazamiento de línea de tiempo se resta de la fecha original ... Esto se debe a las diferentes maneras en que .Net y los navegadores manejan Líneas de tiempo.
  4. El resultado simplemente llama a la función JSON.stringify del navegador ... por lo que no deja espacio para personalizar las fechas.

si usa la función de bloques de clientes del proyecto Mvc Controls Toolkit (yo soy el coordinador) puede usar un knockout "mejorado" que maneja automáticamente los problemas 1 y 2. En el próximo lanzamiento que vendrá dentro de unos días agregaré también el manejo automático del problema 3. Sin embargo ... esto NO RESUELVE el problema del resultado ... ya que enganché las funciones de mapeo del plugin de mapeo knokout que no son utilizadas por el resultado para enviar datos al servidor ... y como el resultado final llama directamente a JSON.stringify ... parece que no hay forma de solucionar el problema ... salvo modificar el resultado para manejar los formatos personalizados json al publicar datos.

En la versión superior de Client Blocks proporcionaré una clase UpdateManager que hace un trabajo "similar" al resultado que maneja las fechas correctamente ... Sin embargo, esto nunca será un sustituto del resultado ya que usa una estrategia de actualización bastante diferente ... y es simplemente una opción MÁS no un sustituto. Así que espero que en el lanzamiento final del resultado exista la posibilidad de personalizar el formato json de los datos.