Как связать сущности, сгенерированные отдельными формами... не имея доступа к коду одного

Итак, я пытаюсь реализовать типичные возможности загрузки изображений на моем сайте. (Я никогда не ожидал, что это будет так сложно!!!) Я наконец-то нашел пакет nuget для AWESOME ( MvcFileUploader), который использует плагин jQuery-File-Upload. Это работает потрясающе, но у меня есть небольшая проблема с выяснением, как связать это с моими сущностями.

Совершенно очевидно, как создать объект Image при загрузке файлов. Но тогда у меня есть много разных типов объектов, которые я хотел бы связать с изображениями после их загрузки (например, новостные статьи, сообщения в блогах, объявления и т. Д.).

В настоящий момент я настроил файл так, что у меня есть загрузчик файлов с правой стороны страницы, а слева - форма для сообщения новостей. Загрузчик файлов делает свое дело и загружает файл, создавая в процессе сущности Image. Проблема возникает, когда я хочу затем связать эти новые сущности Image с моей сущностью News. (Помните, что на момент создания сущностей Image еще не было создано ни одной новостной сущности.)

Первым решением, которое пришло на ум, было использование AJAX, чтобы вставить скрытое поле в форму элемента новостей, чтобы представить новый идентификатор объекта изображения. Однако, к сожалению, я не могу найти какой-либо хороший способ сделать эту работу, так как у меня нет легкого и понятного доступа к коду MvcFileUploader, чтобы попытаться заставить это сделать такую ​​вещь.... и она работает так ну сейчас я боюсь облажаться.:) (Это миниатюрный файл.js.) (Если кто-нибудь знает, как я мог бы сделать это легко и чисто, не испортив плагин для загрузки файлов, я хотел бы услышать об этом.)

Итак, моя следующая идея заключается в том, что я мог бы создать объект другого типа, единственная цель которого - соединить изображение и новость вместе. Что бы я сделал, это создал бы эту новую сущность (назовите ее XYZ), когда я выводил формы и помещал скрытое поле как в форму новостей, так и в форму загрузки изображений (так как mvcfileuploader предоставляет возможность выводить скрытые поля в форму для быть загружен с запросом на загрузку файла). Каждое из этих скрытых полей будет содержать идентификатор объекта XYZ для этой конкретной новостной статьи. Когда я создавал объект изображения, я помещал его идентификатор в объект XYZ, чтобы дождаться получения элемента новостей при его создании. Я думаю, что это может сработать, но это кажется очень грязным. Мне не нравится идея иметь другую сущность только для этой цели, и после того, как элемент новостей создан (или пользователь просто покидает страницу создания элемента новостей), у меня все еще остаются эти объекты в моей базе данных. Я должен был бы регулярно чистить их или что-то в этом роде.

Я также подумал о том, чтобы просто создать новостной элемент при выводе страницы "Создать" и вывести идентификатор новостного элемента в обе формы... но тогда мне пришлось бы отказаться от каких-либо обязательных полей и других ограничений в полях новостного элемента И я бы пустые новости, если пользователь покинул страницу до окончания. Грязный тоже.

Кто-нибудь, помогите, пожалуйста:).

1 ответ

Решение

Я бы, наверное, разделял взгляды. Рабочий процесс может быть, например:

  • News Создать страницу без загрузки файла
  • Форма публикуется на сервере и News создано в базе данных
  • Немедленное перенаправление на страницу сведений для этого News элемент с загрузчиком файлов на правой стороне
  • Загрузка файлов теперь всегда связана с существующим элементом и может быть связана с ним

Это с мыслью о том, что News Элемент имеет смысл без загруженных файлов, но загруженный файл не имеет смысла без элемента новостей. Я не знаю, является ли это возможным предположением для вашего проекта.

Для пользователя вы можете указать на странице "Создание", что он может загружать файлы на втором шаге, например: "Пожалуйста, введите информацию для этой новости. Примечание: Вы можете загрузить связанные файлы после News был создан."Или так...