0

我正在尝试通过 httppost 发送一个包含字典但该字典始终为空的模型......这是我的模型:

public class RoomListModel
    {
        public Dictionary<PersonModel, List<LocationModel>> list { get; set; }
        public String mess { get; set; }
        public RoomListModel(Dictionary<PersonModel, List<LocationModel>> list, String mess)
        {
            this.mess = mess;
            this.list = list;
        }

        public RoomListModel()
        {
        }
    }

在第一个视图中,这种模型被正确填充和显示(我已经做了一些测试)。然后我尝试将它从视图发送到我的控制器。这是我的观点:

@for (int i = 0; i < Model.list.Count(); i++) {
                <tr>
                    <td>
                        @Html.EditorFor(m => m.list.ElementAt(i).Key.isSelected)
                    </td>
                    <td>
                        @Html.DisplayFor(m => m.list.ElementAt(i).Key.login)
                        @Html.HiddenFor(m => m.list.ElementAt(i).Key.login)
                    </td>
                    <td>
                        @Html.DisplayFor(m => m.list.ElementAt(i).Key.role)
                        @Html.HiddenFor(m => m.list.ElementAt(i).Key.role)
                    </td>
                    <td>
                        @for (int j = 0; j < Model.list.ElementAt(i).Value.Count(); j++)
                        {
                            @Html.EditorFor( m => m.list.ElementAt(i).Value.ElementAt(j).isSelected )
                            @Html.DisplayFor( m => m.list.ElementAt(i).Value.ElementAt(j).id )
                            @Html.HiddenFor( m => m.list.ElementAt(i).Value.ElementAt(j).id )
                            @Html.HiddenFor( m => m.list.ElementAt(i).Value.ElementAt(j).name)<br />
                        }
                    </td>
                </tr>
            }

但是当发送该表单时,我有一个 nullReferenceException :

[HttpPost]
        public ActionResult CreateInventory(RoomListModel mod)
        {
            int nbPer = 0;
            foreach (var per in mod.list)
            {
                if (per.Key.isSelected)
                {
                    nbPer++;
                }
            }
            if (nbPer == 0)
            { ...

在 mod.list 上。

你能告诉我我的代码有什么问题吗?是因为字典对象吗?谢谢 !

4

0 回答 0