@Html.HiddenFor() в MVC 3 не передает данные в контроллер
У меня есть класс с именем "AirLineSession":
public ExtendedList listCo { get; set; }
public ExtendedList listBa { get; set; }
public bool SortbyRating { get; set; }
public AirLineSession()
{
listCo = new ExtendedList();
listBa = new ExtendedList();
}
На мой взгляд, я имею:
@Html.HiddenFor(m => m.listBa)
@Html.HiddenFor(m => m.listCo)
@Html.DropDownListFor(a => a.SortbyRating, new[] { new SelectListItem { Text = "Sort by rating", Value = "true" }, new SelectListItem { Text = "Sort by frice", Value = "false" } })
Когда я делаю это представление, только данные SortByRating передаются модели в Controller, listBa и listCo не передаются. Я не знаю почему.
Кто-нибудь, помогите мне, спасибо.
2 ответа
Не могли бы вы опубликовать код класса ExtendedList? Причина в том, что asp.net mvc не знает, как создать все скрытые для сложного типа ExtendedList. В этом случае вы должны добавить скрытые значения для каждого поля объекта и коллекции для обеих коллекций, например:
@for(var i = 0; i < Model.listCo.Lenght; i++)
{
@Html.HiddenFor(model => model.listCo[i].Property1)
@Html.HiddenFor(model => model.listCo[i].Property2)
@Html.HiddenFor(model => model.listCo[i].Property3)
}
А также:
@for(var i = 0; i < Model.listBa.Lenght; i++)
{
@Html.HiddenFor(model => model.listBa[i].Property1)
@Html.HiddenFor(model => model.listBa[i].Property2)
@Html.HiddenFor(model => model.listBa[i].Property3)
}
Если вы используете вспомогательные html-помощники, убедитесь, что вы передали их значения по модели в связанное представление. Но если нет, вы должны поместить значения в некоторые динамические инструменты, такие как ViewBag, а затем использовать следующий код:
@Html.Hidden("listBa", ViewBag.listba)
@Html.Hidden("listCo", ViewBag.listco)