我有以下viewModel
public class ExerciceViewModel
{
public string Code { get; set; }
public string Titre { get; set; }
public int QuestionCourante { get; set; }
}
以下观点
@model MonEcoleVirtuelle.ViewModel.ExerciceViewModel
@{
ViewBag.Title = "Test";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Test</h2>
@using (Html.BeginForm("test", "exercice", FormMethod.Post))
{
@Model.Code <br />
@Model.Titre<br />
@Model.QuestionCourante<br />
<br />
<br />
Model.Code = "Code Modifie";
<input type="submit" value="Post Moi Ca!" name="fini" />
}
以及以下控制器方法
[HttpPost]
public ActionResult Test(ViewModel.ExerciceViewModel model)
{
if (ModelState.IsValid)
{
return Content(model.Code);
}
return View(model);
}
[HttpGet]
public ActionResult Test()
{
var vm = new ViewModel.ExerciceViewModel { Code = "code1", Titre = "Mon titre", QuestionCourante = 1 };
return View(vm);
}
当我提交表单时,传递的模型为空,所有属性都被重置,不保留原始值。我错过了什么。
感谢
答案 0 :(得分:3)
您的视图中未包含任何输入字段。
@Model.Code
等仅输出字段的值。为了能够回发元素,他们需要成为表单元素,如输入。使用像
@Html.TextBoxFor(p=>p.Code)
创建可以回发的输入字段。
有关更完整的指南,请参阅http://msdn.microsoft.com/en-us/library/dd410596(v=vs.100).aspx
上的MSDN答案 1 :(得分:3)
嗯,而不是只显示值的@Model.Code
,你需要一些输入。
所以@Html.TextBoxFor(m => m.Code)
例如
要管理集合,您可以执行以下操作:
@for (var i = 0; i < Model.Collection.Count; i++) {
Html.TextBoxFor(m => Model.Collection[i].Property)
}