Pregunta

HI,

Estoy seguro de que me falta algo muy obvio aquí así que por favor perdóname.

  • Estoy usando MVC Beta 2 y tengo un modelo que tiene varias propiedades, cuerdas, etc. enteros lo de siempre.
  • También tiene una matriz de bytes que contiene una imagen.
  • Tengo un método de acción edición el controlador de mi decorado con un atributo [HTTPGet].
  • El método pasa el modelo a la vista de que es una forma que tiene los cuadros de texto habituales que se unen a las diferentes propiedades de cadena y un elemento img que está unido a la matriz de bytes / imagen.

Todo esto funciona como debería y veo todos los datos, incluyendo la imagen. Todo esto es bastante estándar.

Sin embargo, cuando el usuario envía el formulario a mi versión [HttpPost] del método de acción que acepte el mismo modelo que su parámetro de la propiedad de imagen es nula. es decir, la propiedad de imagen no parece ser parte del modelo de unión.

En el curso normal de los acontecimientos que haríamos alguna validación y aprobar el modelo de nuevo a la vista que pudiera ser emitida por lo que el usuario puede ver si los cambios eran exitosa o no. Pero justo pasando el modelo de vuelta "como es" -. La vista no hace que la imagen de nuevo, ya que su tiempo en el modelo sin

Sé que puedo ir a buscar de nuevo la imagen (de la base de datos o donde sea) y poner de nuevo en el modelo antes de pasarlo a la vista, pero es que el stratergy bien o me he perdido algo

Saludos, Simon

¿Fue útil?

Solución

¿Cómo representar la imagen que está contenido como datos binarios en el modelo? ¿Utiliza los controles clásicos WebForms (lo que sería no recomded en la terminología MVC)? De todos modos, si la imagen sólo se muestra en la vista no se registró cuando el usuario envía el formulario, ya que sólo los campos de entrada (casillas de verificación, campos de texto, hiddens) están inscritos por el servidor. elemento de la imagen no lo es. Recuerde que en MVC que está haciendo todo el trabajo de la publicación de los datos al servidor HTML simple - no hay estado de vista ni la devolución de datos automático que persistirá el estado de los controles. Tiene dos soluciones:

  1. codificar datos binarios en algún campo oculto por lo que se publicarán de nuevo.
  2. (mejor) No enviar los datos de imagen de ida y vuelta entre el cliente y el servidor, pero detectar si el usuario proporciona nueva imagen (espero que wolud utiliza el archivo de entrada para eso) y si el usuario deja el archivo de entrada vacía a continuación, actualizar el modelo con la imagen ya almacenada en la base de datos para mostrar de nuevo. De lo contrario actualizar la imagen en la base de datos.

De todos modos, tengo curiosidad, ¿cómo visualización de la imagen a partir de datos binarios en el modelo. Creo que sería más sencillo para crear algo de acción del controlador que devolvería datos binarios así que podría usar el URL de esa acción en el atributo src de la etiqueta IMG, o almacenar imágenes como archivos y usar su URL en lugar de datos binarios.

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