尝试使用更复杂的视图模型但没有成功后,我开始使用viewmodel,如下所示:
public class CarteExpressViewModel
{
public string[] LesEntrees;
public string[] LesPlats;
public CarteExpressViewModel()
{
LesEntrees = new string[]{ "", "", "", "", "", "" };
LesPlats = new string[]{ "", "", "", "", "", "" };
}
}
我在我的控制器的create方法中传递了viewModel
public ActionResult Create()
{
CarteExpressViewModel carteExpressViewModel = new CarteExpressViewModel();
return View(carteExpressViewModel);
}
问题是我可以看到输入值,如果我使用FormCollection
作为我的Post创建方法的参数但是如果我使用viewmodel则一切都为null
我的观点是这样的:
@for (int i = 0; i < Model.LesEntrees.Length; i++)
{
<div class="editor-label ">
@Html.LabelFor(model => model.LesEntrees[i], "Entrée n°" + (i + 1).ToString(), new { @class = " express_input_label" })
</div>
<div class="editor-field ">
@Html.EditorFor(model => model.LesEntrees[i], new { @class = " express-input" })
</div>
}
我无法确定错误但确定应该做的事情。
答案 0 :(得分:1)
您将变量设置为 fields ,而不是属性。将它们更改为:
public string[] LesEntrees { get; set; }
public string[] LesPlats { get; set; }
答案 1 :(得分:0)
继Chris Pratt的回答,是的我应该使用属性,但由于阵列存在问题,这还不够 (见http://forums.asp.net/t/1597890.aspx?Collection+is+read+only+Arrays+in+models) 所以我回到了一个不太简单的使用Lists的viewmodel,这个可以工作......