2014-01-23 1 views
0

Я перехожу к MVC 4 и EF с фона Windows Forms, и мне сложно понять что-то с точки зрения архитектуры/кодирования.Как сохранить несколько записей базы данных из нескольких представлений в MVC 4 с помощью EF?

У меня есть приложение для создания/редактирования заказов на работу. Существует запись заголовка рабочего заказа с несколькими другими записями, связанными с задачами работы с заголовками, данными о клиентах, данными о дизайне заданий и т. Д. Я хочу создать все эти записи одновременно, даже если данные будут введены на нескольких экранах который, как я понимаю, является несколькими представлениями в одном контроллере.

Проблема, с которой я столкнулась, заключается в том, чтобы удерживать данные от каждого вида, а затем делать окончательное сохранение в конце представлений. Прямо сейчас я пытаюсь сделать это, передавая данные между представлениями с помощью TempData. Есть лучший способ сделать это? Даже если бы я использовал Entity Framework в приложении Windows Forms, я мог просто удерживать контекст db и продолжать добавлять записи к нему до тех пор, пока не дойду до конца и не выполнил db.SaveChanges(). Есть ли способ сделать это в контроллере или мне нужно передать контекст db во временных данных или через параметры в представлениях?

У меня должно быть что-то упущено, потому что многие приложения требуют внесения изменений в несколько записей, и это просто нецелесообразно пытаться подобрать каждое поле в одном представлении.

Любые предложения очень ценятся!

Barry

ответ

1

Если вы собираетесь интерфейс мастера стиля, который он звучит, как вы, я хотел бы создать модель представления, которая имеет способность удерживать всю информацию вам нужно для заказа работы.

Для простоты можно сказать, что существует 3 вида. Почему вы публикуете представление, вам просто нужно отправить информацию в модели просмотра в следующее представление. Убедитесь, что вы сохраняете информацию в скрытых полях на странице, чтобы она была отправлена ​​обратно в следующий для сообщения.

Вот пример того, что я хотел бы сделать в действии контроллера:

[HTTPPost] 
public ActionResult StepOne(ComprehensiveViewModel model) 
{ 
    // manipulate model as required 

    // notice we pass the partially completed model on to the next view 
    return View("StepTwo", model); 
} 

Тогда в представлении StepTwo:

//Hiddens for the data you want to preserve from StepOne 
@Html.HiddenFor(model=> model.SomeStepOneProperty) // etc. 
+0

Так с этим подходом, я бы создать (или генерировать) скрытые поля на каждом представлении, которые могут содержать все данные из модели представления? В моем случае может быть до 8 записей рабочих задач и нескольких других записей, поэтому на каждом представлении должно быть до нескольких десятков скрытых полей. Возможно, просто объединив все это в единое всеобъемлющее представление и прохождение через TempData не так уж плохо. Я также должен бороться с тем, что пользователям нужна кнопка «Назад» для просмотра/редактирования своих данных перед отправкой. – user3228223

Смежные вопросы