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

本文关键字:数据 控制器 中的 Html HiddenFor @mvc | 更新日期: 2023-09-27 18:26:25

我有一个名为"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没有被传递。我不知道为什么
任何人帮我,谢谢。

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

你能发布ExtendedList类的代码吗?原因是asp.net mvc不知道如何为ExtendedList复杂类型创建所有Hidden。在这种情况下,您应该为对象的每个字段添加隐藏点,并为两个集合添加集合,例如:

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

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

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