Сейчас я просто изучаю MVC3, и это меня действительно сбивает с толку.Почему создание новой модели ViewModel возвращает те же данные, что и старый ViewModel?
У меня есть ViewModel
, который содержит некоторые дочерние ViewModels. Каждый из ChildViewModels получает визуализацию с другим частичным представлением и при подаче выполняет другое действие на контроллере. Все ChildViewModels должны выполнить некоторую выборочную проверку своих данных, и в случае успеха она должна перейти к следующей странице. Если проверка не удалась, она должна просто вернуться к ParentView
и отобразить ошибки.
[HandleError]
public class MyController: Controller
{
public ActionResult Index()
{
var viewModel = new ParentViewModel();
return View("ParentView", viewModel);
}
[HttpPost]
public ActionResult ChildViewModelB_Action(ChildViewModelB viewModel)
{
if (ModelState.IsValid)
{
return View("ChildViewModelB_Page2", viewModel);
}
else
{
// I'm having trouble returning to the ParentView and
// simply displaying the ChildViewModel's errors, however
// discovered that creating a new copy of the VM and displaying
// the ParentView again shows the existing data and any errors
// But why??
var vm = new ParentViewModel();
return View("ParentView", vm);
}
}
}
Например,
- Нагрузки страницы с 3-мя вариантами.
- Пользователь выбирает вариант B и заполняет форму.
- После отправки дочерний элемент ViewModel B получает подтверждение и завершается сбой.
- Страница возвращается в ParentView с заполнением ChildB, однако теперь также отображаются ошибки ChildB.
Почему создает новую копию ParentViewModel
дисплея ParentView
с теми же данными, что и оригинальным ParentViewModel
?
И можно ли по-другому вернуться к ParentView
после проверки на стороне сервера?
Почему вы не хотите, чтобы показать ошибки в если проверка завершена? – VJAI
@Mark Я действительно хочу ... Я просто не знаю, как. Единственный способ, которым я обнаружил ошибки в ParentView, - создать новый ParentViewModel и вернуть представление, но мне не имеет никакого смысла, почему это работает – Rachel
Думаю, я сейчас понимаю проблему. будет обновлять ответ. – VJAI