Вопрос

ПРИВЕТ,

Я уверен, что упускаю что-то очень очевидное, поэтому, пожалуйста, простите меня.

  • я использую MVC 2 бета и у меня есть модель, которая имеет несколько свойств, строк, целых чисел и т.д.обычные вещи.
  • Он также имеет массив байтов, содержащий изображение.
  • У меня есть метод действия редактирования на моем контроллере, украшенный атрибутом [HTTPGet].
  • Метод передает модель представлению, которое представляет собой форму с обычными текстовыми полями, привязанными к различным строковым свойствам, и элементом img, привязанным к байтовому массиву/изображению.

Все работает так, как должно, и я вижу все данные, включая изображение.Это все довольно стандартные вещи.

Но когда пользователь отправляет форму в мою версию метода действия [HTTPPost], которая принимает ту же модель в качестве параметра, свойство изображения имеет значение null.то естьсвойство изображения не является частью привязки модели.

В обычном ходе событий мы бы провели некоторую проверку и передали модель обратно в представление для рендеринга, чтобы пользователь мог увидеть, были ли изменения успешными или нет.Но если просто передать модель обратно «как есть», представление не отобразит изображение снова, потому что его больше нет в модели.

Я знаю, что могу снова получить изображение (из базы данных или откуда угодно) и поместить его обратно в модель, прежде чем передавать его в представление, но это правильная стратегия или я что-то упустил?

С уважением, Саймон

Это было полезно?

Решение

Как визуализировать изображение, содержащееся в модели в виде двоичных данных?Используете ли вы классические элементы управления веб-форм (что не рекомендуется в терминологии MVC)?В любом случае, если изображение отображается только в представлении, оно не публикуется, когда пользователь отправляет форму, поскольку на сервер передаются только поля ввода (флажки, текстовые поля, скрытые элементы).элемент изображения нет.Помните, что в MVC всю работу по отправке данных на сервер выполняет простой HTML — нет ни состояния представления, ни автоматической обратной передачи, которые сохраняли бы состояние элементов управления.У вас есть два решения:

  1. Закодируйте двоичные данные в каком-нибудь скрытом поле, чтобы они были опубликованы снова.
  2. (лучше) Не отправляйте данные изображения туда и обратно между клиентом и сервером, но определите, предоставил ли пользователь новое изображение (я ожидаю, что вы будете использовать для этого ввод файла), и если пользователь оставил ввод файла пустым, затем обновите модель с изображением, уже сохраненным в базе данных, чтобы отобразить ее снова.В противном случае обновите изображение в базе данных.

В любом случае, мне любопытно, как вы отображаете изображение из двоичных данных в модели.Я думаю, что было бы проще создать какое-нибудь действие контроллера, которое возвращало бы двоичные данные, чтобы вы могли использовать URL-адрес этого действия в атрибуте src тега img или хранить изображения в виде файлов и использовать их URL-адрес вместо двоичных данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top