MVC4 Razor:HTTPPost和Dictionary

时间:2013-07-05 09:09:34

标签: c# asp.net-mvc-4 razor http-post

我试图通过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。

您能否告诉我我的代码有什么问题?是因为Dictionnary对象吗?谢谢!

0 个答案:

没有答案