我使用用C#编写的MVC项目。
我有一个对象'Recipe',其中包含:
int id;
List<Ingredient> ingredientList;
String description;
//and so on
当我将“食谱”对象从我的控制器传递到我的视图时,成分列表中包含了我食谱的不同成分。在我看来,要保存成分列表,我这样做:
@Html.HiddenFor(model=>model.Ingredients)
但是当我在我的视图中提交表单时,它会转到我的控制器。当我使用调试器查看包含当前配方的内容时,我注意到我的成分列表是空的。我不知道为什么。
你有解决方案吗?
答案 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中传递所有额外数据,而这些数据并不是必需的。