Asp.net MVC,CheckBoxs在列表的情况下不绑定

时间:2014-08-08 14:59:03

标签: asp.net-mvc-4

虽然它似乎也已在前面讨论过,但我找不到解决方案 - :

我有一个这样的VM - :

 public class RoomsVm
    {
        public RoomsVm()
        {


          Rooms.Add(new Room()
          {
              IsVip = true,Id = "1"

          }
          );
          Rooms.Add(new Room()
          {
              IsVip = false,
              Id = "2"
          }
          );  
        }

        public List<Room> Rooms=new List<Room>();
    }

    public class Room
    {
        public bool IsVip { get; set; }
        public string Id { get; set; }

    }

我的控制器有2个简单的动作 - 1-代表获取,2代表发布 - :

 public ActionResult IndexView2()
        {
            var roomVM = new RoomsVm();
            return View(roomVM);
        }
        [HttpPost]
        public ActionResult IndexView2(RoomsVm roomsVm)
        {

            return View(roomsVm);
        }

在我看来 - 我只是用这样的复选框显示我的房间 - :

@model MVCApplication.Models.RoomsVm
<h2>IndexView2</h2>

@using (Html.BeginForm())
{
for (int i = 0; i < Model.Rooms.Count(); i++)
{
    @Html.CheckBoxFor(modelItem=>modelItem.Rooms[i].IsVip,new{value=Model.Rooms[i].Id})
}

<input type="submit" value="Submit"/>

}

问题 - 当我点击提交按钮时,我没有在Post动作的输入值中获得房间复选框的更新值。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的Rooms财产上没有访问者

public class RoomsVm
{
  public RoomsVm()
  {
    Rooms = new List<Room>(); // Initialize rooms
    Rooms.Add(new Room() {.... //Add rooms
  }
  public List<Room> Rooms { get; set; } // Add get/set
}