在 asp.net 中将对象列表从视图传递到控制器

本文关键字:视图 控制器 列表 net asp 对象 | 更新日期: 2023-09-27 18:33:35

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

有人可以向我解释如何将列表从视图正确传递到控制器吗?

我尝试了表格,但我不确定这是否是正确的方法。

我在谷歌上搜索了很多,在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;
        }
    }

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

在 asp.net 中将对象列表从视图传递到控制器

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

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