Загрузка файла отдельно и поддержание состояния других элементов управления - PullRequest
0 голосов
/ 18 июня 2011

У меня есть приложение MVC 3 с Razor.Форма управляется данными и имеет ряд тестовых блоков и переключателей, а также элемент управления загрузкой файлов.Текстовые поля и радиокнопки находятся в первой форме, а элемент управления загрузкой находится в своей собственной форме.Если файл загружен первым, то все в порядке.Но если, скажем, пользователь заполняет форму текстовыми полями и переключателями, а затем находит файл, который нужно прикрепить, и нажимает кнопку присоединить (кнопка отправки) во второй форме, вся страница отправляется обратно, и все элементы управления теряют свои значения иэто не интуитивно понятно пользователю.Поскольку я пытаюсь выполнить выгрузку и выгрузку файла на сервер как отдельную задачу в форме, я не могу найти в сети примеров для такого сценария.Все, что я нахожу, это люди, которые делают форму elemnets и загружают файлы одним действием subit.Мое требование заключается в том, чтобы загрузка файлов велась отдельно, чтобы пользователи могли прикреплять файлы, а также удалять прикрепленные файлы, поэтому только когда они счастливы, они отправляют форму.Любые указатели приветствуются.

1 Ответ

1 голос
/ 18 июня 2011

Вот подход, который вы можете попробовать и который кажется адаптированным к вашему сценарию:

  1. Используйте AJAX (или Flash / Silverlight / HTML5) для загрузки файла, чтобы избежать перезагрузки страницы.Существует множество плагинов и возможностей: plupload , uploadify , jquery form , ..., просто выберите тот, который подходит вам.
  2. Когда пользователь загружает файл, хранит его на сервере в каком-то временном месте и возвращает уникальный идентификатор, чтобы позже вы могли получить этот файл.
  3. На клиенте используйте идентификатор, чтобы вставить его в скрытое поле напервая форма (та, которая содержит все текстовые поля и радио).
  4. Когда пользователь отправит первую форму, идентификатор загруженного файла будет отправлен на сервер, и вы сможете получить файл, который былзагружено.

Этот подход также позволяет загружать несколько файлов.Просто играйте с jQuery и манипулируйте массивом скрытых полей (добавляйте, удаляйте, ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...