Есть несколько способов, которыми я мог бы заняться этим.
Сначала;Я мог бы решить хранить все это в объекте сеанса.Здесь я предполагаю, что модели довольно большие, и поэтому я не хочу, чтобы они сохранялись в представлении и передавались обратно каждый раз, когда я перехожу на следующую страницу.
Second;Я мог бы сохранить их в базе данных, и если мастер не завершил их работу, удалите их как часть фонового процесса.
Единственное, чего я бы не стал делать, - передать сложный объект каждому представлению.Представлению действительно нужно знать что-либо о любом другом представлении в спокойном мире, и поэтому я склонен этого не делать.
Конечно, это означает, что вам нужно выбрать место для хранения данных.Если бы у меня был Большой объект, то я бы выбрал базу данных, а если бы она была довольно маленькой, я бы выбрал объект сеанса.
Как вы уже обнаружили, наличие всех данных для каждого объекта в каждом представлении можетбыть проблематичным.
Однако, если вы полны решимости сделать это способом просмотра, вот что я бы сделал;
- Создайте частичное представление, которое работает только с каждым объектомсложная модель.
- В каждом представлении включите все три или более частичных представления.
- Для каждого частичного представления, которое не является активным участником представления, поместите его вdiv, который скрыт.
По крайней мере тогда, когда вы изменяете или добавляете свойство, вы просто устанавливаете его в частичном виде один раз, а не три раза.Кроме того, если есть ошибка, вы можете показать div и посмотреть, поступают ли данные.
Также каждое поле должно иметь идентификатор ModelName.Property, чтобы контроллер знал, где находится свойство.
<%= Html.TextBox("MyObject1.MyProperty1", value) %>
Тогда в контроллере вы просто делаете, и это с манжеты;
[HttpPost]
public ActionResult MyAction1(ComplexObjectModel complexModel) {