2014-12-06 104 views
-1

我使用用C#编写的MVC项目。如何将包含列表的视图传递给控制器​​

我有一个对象“食谱”包含:

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

当我通过从我的控制器中的“配方”对象我的看法,成分表中包含以及我的配方的不同成分。在我看来,要保存成分表,我这样做:

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

但是,当我提出我认为我的形式,所以这是要我的控制器。当我使用调试器来查看包含当前配方的内容时,我注意到我的配料列表是空的。我不知道为什么。

您有解决方案吗?

+1

你不能在复杂对象上使用@ Html.HiddenFor()。你需要使用'for'循环并为'Ingredients'(或者''ingredientlist'')的每个属性提供输入,但是因为只需要隐藏输入,所以将所有数据发送给客户端有什么意义,然后发布它全部恢复到服务器的状态。如果您在POST方法中需要它,请再次从存储库中获取它。 – 2014-12-06 08:55:36

回答

-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中传递所有额外的数据,而这些数据并不需要。

+0

感谢您的回复 – user2274060 2014-12-06 09:41:26

相关问题