mvc 3中的@ Html.HiddenFor()不会将数据传递给控制器

时间:2013-08-05 13:00:45

标签: c# asp.net-mvc asp.net-mvc-3 html.hiddenfor

我有一个名为“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 个答案:

答案 0 :(得分:0)

你可以发布ExtendedList类的代码吗?原因是asp.net mvc不知道如何为ExtendedList复杂类型创建所有Hiddens。在这种情况下,您应该为两个集合的每个对象和集合添加hiddens,样本:

@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)
}

答案 1 :(得分:0)

如果您正在使用For Stml html帮助程序,请确保已按模型将其值传递到相关视图。但如果没有,您应该将值放在一些动态工具(如ViewBag)上,然后使用以下代码:

@Html.Hidden("listBa", ViewBag.listba)
@Html.Hidden("listCo", ViewBag.listco)