我正在尝试通过 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 上。
你能告诉我我的代码有什么问题吗?是因为字典对象吗?谢谢 !