@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)
Другие вопросы по тегам