MVC foreach将item.ID设置为model.ID

时间:2016-05-12 10:12:47

标签: asp.net-mvc

我有一个显示所有可用酒店房间的表格,每个房间都有一个按钮,如果点击它就会执行HttpPost,我在BookingViewModel中创建了一个名为' RoomID'的房产。我想将item.RoomID分配给Model.RoomID,以便我可以在我的控制器中使用它来获取所选房间的ID,但我不知道如何实现这一点。

ChooseRoom View

[HttpPost]
public ActionResult ChooseRoom(BookingViewModel vm)
{
    BookingViewModel bookingObj = GetBooking();
    bookingObj.SelectedRoom = Repository.GetRoomByID(vm.RoomID);      
    return View("reservation", bookingObj);
}

BookingController

{{1}}

感谢您的时间!

2 个答案:

答案 0 :(得分:2)

更新您的开始表单,如下所示

@using (Html.BeginForm("chooseroom", "booking", FormMethod.Post))
{
   <input type="hidden" name="RoomId" value="@item.RoomID" />
   <input class="button2" type="submit" value="Select Room" />
}

只需提供与ViewModel属性同名的输入标记。

答案 1 :(得分:1)

你可以在foreach循环中添加输入,它应该在form里面。像这样<input name="Model.AvailableRooms[index].RoomID" value="Id Here"/>

或者如果你想选择一个房间,你应该使用ajax和post id。

如果我没错,那么你的表单是循环的,所以你可以用id添加隐藏的输入

@Html.HiddenFor(c => c.AvailableRooms[index].RoomID)