将视图中的对象列表传递给asp.net中的控制器

时间:2016-02-08 10:04:19

标签: c# asp.net

我正在为List中的每个对象添加复选框。当我尝试将值返回给控制器时,列表为空,我只得到复选框bool。

有人可以向我解释如何正确地将List从视图传递给控制器​​。

我用表单尝试过,但我不确定这是否正确。

我在谷歌上搜索了很多,并在stackoverflow上发现了类似的帖子,但我找不到帮助我的帖子。

查看

@model List<WCFasp.net.WCF.Person> 
@{
    ViewBag.Title = "ShowView";
}

@using (Html.BeginForm("Check", "Home"))
{
        for (int i = 0; i < Model.Count(); i++)
        {
        <p>@Html.CheckBoxFor(m => m[i].IsChecked) @Html.DisplayFor(m => m[i].Name)</p>
        }
        <input id="submit" type="submit" value="submit" />
}

控制器

[HttpPost]
        public ActionResult Check(List<WCF.Person> selectedpersonlist)
        {
            //Here I get the empty list

            return View("ShowSelectedView");
        }

[DataContract]
    public class Project
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public bool IsChecked { get; set; }

        public Project(string name, bool isChecked)
        {
            this.Name = name;
            this.IsChecked = isChecked;
        }
    }

最后的小问题。我投票是因为我不是专业人士还是其他原因?

1 个答案:

答案 0 :(得分:2)

如果您希望在列表中填充更多属性,则可以使用隐藏字段来存储信息:

for (int i = 0; i < Model.Count(); i++)
{
    @Html.HiddenFor(m => m[i].Name)
    <p>@Html.CheckBoxFor(m => m[i].IsChecked) @Html.DisplayFor(m => m[i].Name)</p>
}