Каскадные модели в ASP.NET MVC 5 - нужны архитектурные рекомендации - PullRequest
0 голосов
/ 14 февраля 2019

Рассмотрим View V и связанную с ним импортированную VM ViewModel.Это представление предназначено для процесса отправки финансового документа и содержит несколько полей, а виртуальная машина модели представления содержит свойство списка клиентов List> Customer>, которое загружается из базы данных при запуске и заполняет раскрывающийся список.V загружается, и пользователь выбирает клиента C из списка List> C>.Сразу же форма отправляется с сохранением C.Id и перенаправляется в HttpGet ActionResult, который использует C.Id для заполнения раскрывающегося списка из базы данных, содержащей весь список идентификаторов элементов> I>, ранее заказанный у этого клиента.Этот список хранится в ВМ.Пользователь выбирает элемент I из этого выпадающего списка.Сразу же, форма отправляется с сохранением I.Id и перенаправляется в HttpGet ActionResult, который использует C.Id и I.Id для получения цены, связанной с этим элементом, I.Price, из базы данных и заполняет ее в текстовом поле на V.

Выше было легко.Теперь это действительно сложно.Пользователь заполняет количество I, для которого он хочет подать финансовую заявку, пишет комментарий в соседнем текстовом поле и нажимает кнопку «Добавить элемент», которая затем перезагрузит форму, отображающую элемент в таблице HTML в форме длявсе, чтобы увидеть, в то время как C.Id все еще указан в выпадающем списке.Компания ожидает, что несколько элементов будут добавлены в форму за один раз до окончательной отправки.Теперь мне нужно сохранить объект ОБЪЕКТ (содержащий 5-6 полей), а также LIST> ITEM>, пока в этот список добавляется больше элементов.Цель состоит в том, чтобы я мог отправить это в таблицу Submission, S, содержащую S.Id, в которой будут показаны клиент, информация об адресе, SubmissionId и несколько других полей, а также будет отправлять все элементы в связанную таблицу SubmissionItem, которая такжесодержат тот же SubmissionId для отслеживания представлений.

Я абсолютно не знаю, как выполнить второй абзац.Я не думаю, что это возможно.В настольном приложении это просто, но в Интернете я не могу сохранить формы!Моя единственная мысль состояла в том, чтобы удалить все аннотации данных и просто никогда не обновлять представление методов RedirectToAction, но это не протокол PRG.Есть идеи?

1 Ответ

0 голосов
/ 14 февраля 2019

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

Другой вариант - использовать асинхронные операции для каждого сложения и вычитания.

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