如何将包含列表的对象从View传递给控制器

时间:2014-12-06 08:51:05

标签: c# asp.net-mvc asp.net-mvc-4

我使用用C#编写的MVC项目。

我有一个对象'Recipe',其中包含:

int id;
List<Ingredient> ingredientList;
String description;
//and so on

当我将“食谱”对象从我的控制器传递到我的视图时,成分列表中包含了我食谱的不同成分。在我看来,要保存成分列表,我这样做:

@Html.HiddenFor(model=>model.Ingredients)

但是当我在我的视图中提交表单时,它会转到我的控制器。当我使用调试器查看包含当前配方的内容时,我注意到我的成分列表是空的。我不知道为什么。

你有解决方案吗?

1 个答案:

答案 0 :(得分:-1)

这里的问题是视图只知道如何为基本类型执行HiddenFor

您可以通过以下方式解决此问题:

@foreach (var item in Model.Ingredients) 
{
    @Html.HiddenFor(modelItem=>item.IngredientProperty1);
    @Html.HiddenFor(modelItem=>item.IngredientProperty2);
    //and so on for all the properties of your Ingredient class
}

说到这一点,你可能最好建议只使用你想要编辑的属性作为类的读/写属性的视图模型。然后,您将不会在http POST中传递所有额外数据,而这些数据并不是必需的。