Первое исключение, которое вы получите, запустив этот код и отправив форму, будет следующим:
[MissingMethodException: No parameterless constructor defined for this object.]
Это потому, что EditTestViewModel
не имеет конструктора без параметров, вы не можете использовать его таким образом.
Вторая проблема с вашим кодом заключается в том, что вы создаете новый объект в своем действии POST вместо повторного использования объекта, переданного в качестве аргумента.
Итак, как это исправить:
Просмотр модели:
public class EditTestViewModel
{
public String test { get; set; }
}
Контроллер:
public ActionResult EditTest()
{
var model = new EditTestViewModel
{
test = "Is this a test?"
}
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditTest(EditTestViewModel test)
{
return View(model);
}
И если по какой-то причине вы захотите отредактировать значение в действии POST и отразить его в представлении, вынеобходимо удалить его из состояния модели, иначе помощники HTML выберут старое значение:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditTest(EditTestViewModel test)
{
model.test = "new value";
ModelState.Remove("test");
return View(model);
}