Звучит так, как будто вы пришли с веб-форм.Для перехода на MVC нужно удалить мысль о PostBack.Это концепция, которой на самом деле не существует в Интернете, но Webforms подделали ее для нас.
В MVC вы обычно начинаете с запроса GET, например / edit / {someId}.Отсюда вы загружаете данные для модели представления из базы данных и визуализируете представление.Теперь предположим, что все данные в модели представления доступны для редактирования, поэтому каждое свойство имеет свое собственное поле ввода.Пользователь редактирует некоторые данные и сохраняет форму.Это выдает POST на сервер.
Предположим, у нас есть этот метод POST
[HttpPost]
public ActionResult Edit(MyViewModel model)
В этом случае у вас есть все данные, которые вам нужны, с привязкой к модели, поскольку все данные существуют в форме.
Вы можете сделать этои получим то же представление, потому что все данные были привязаны к данным.
[HttpPost]
public ActionResult Edit(MyViewModel model){
return View(model);
}
Теперь давайте представим, что в вашей форме есть выпадающий список.Тогда у вас будут эти два свойства в вашей модели представления.
public int CarId { get; set; }
public IEnumerable<SelectListItem> CarOptions {get; set; }
Когда вы публикуете форму на этот раз, CarId будет заполняться в ViewModel, но не CarOptions, потому что они не являются частью данных формы.Если вы захотите вернуть тот же самый вид снова, вам нужно перезагрузить недостающие части.
[HttpPost]
public ActionResult Edit(MyViewModel model){
model.CarOptions = LoadCarOptions();
return View(model);
}
Конечно, можно связать это и с моделью, если поместить его в скрытое поле.Но проще и, вероятно, более эффективно снова загрузить его с сервера / базы данных.Это нормальный подход при работе с MVC.