2014-12-06 2 views
-1

Я использую проект MVC, написанный на C#.Как передать объект, содержащий список из View на контроллер

Я объект «Рецепт», который содержит:

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

Когда я прохожу «Рецепт» объект из моего контроллера на мой взгляд, список ингредиентов содержит также различные ингредиенты моего рецепта. На мой взгляд, чтобы сохранить список ингредиентов, я делаю это:

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

Но когда я представляю свою форму, на мой взгляд, так это будет мой контроллер. И когда я использую отладчик, чтобы увидеть, что содержит текущий рецепт, я замечаю, что список моих ингредиентов пуст. Я не знаю почему.

У вас есть решение?

+1

Вы не можете использовать '@ Html.HiddenFor()' на сложном объекте. Вам нужно использовать цикл 'for' и визуализировать входы для каждого свойства' Ingredients' (или это 'compientlist'?), Но поскольку вы хотите только скрытые входы, то зачем отправлять все эти данные клиенту, а затем отправлять все это снова не меняется на сервере. Если вам это нужно в методе POST, просто верните его из репозитория. –

ответ

-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

Смежные вопросы