1
我嘗試創建新房間,但roomTypeID總是返回1,我的代碼有什麼問題? 我可以做一個新的房間類型,但我不能插入房間設施在我的數據庫,因爲RoomType ID始終返回1錯誤,從控制器獲取價值
這是我的代碼..
我控制器
public ActionResult NewRoom()
{
ViewBag.hotel = _hotelService.GetByID(_HotelID).HotelName;
List<ShowEditRoomViewModel> showEditRoomViewModel = _roomTypeService.showNewRooms();
return View(showEditRoomViewModel.FirstOrDefault());
}
[HttpPost]
public ActionResult NewRoom(FormCollection typeRoom)
{
_roomTypeService.NewRoom(_HotelID, typeRoom["RoomTypeName"], typeRoom["RoomTypeDescription"]);
List<string> IDs = typeRoom["FacilityIDs"].Split(',').ToList();
List<int> FacilityIDs = new List<int>();
foreach (string ID in IDs)
{
FacilityIDs.Add(Convert.ToInt32(ID));
}
_roomTypeService.UpdateFacilityInRooms(FacilityIDs, Convert.ToInt32(typeRoom["RoomTypeID"]));
return NewRoom();
}
我的服務
public void UpdateFacilityInRooms(List<int> FacilityIDs, int RoomTypeID)
{
List<HotelRoomFacility> hotelRoomFacilities = _HotelRoomFacilityRopository.AsQueryable().Where(f => f.RoomTypeID == RoomTypeID).ToList();
foreach (int newRoomFacility in FacilityIDs)
{
if (hotelRoomFacilities.Where(h => h.RoomFacilityID == newRoomFacility).Count() == 0)
{
HotelRoomFacility facility = new HotelRoomFacility
{
RoomFacilityID = newRoomFacility,
RoomTypeID = RoomTypeID
};
_HotelRoomFacilityRopository.Add(facility);
}
}
_HotelRoomFacilityRopository.CommitChanges();
}
我的視圖模型
public class ShowEditRoomViewModel
{
public int RoomTypeID { get; set; }
public string RoomTypeName { get; set; }
public string RoomTypeDescription { get; set; }
public List<FaciliyInRoom> facilityinRoom { get; set; }
}
我看來
@model XNet.Repository.Model.ShowEditRoomViewModel
@{
ViewBag.Title = "NewRoom";
}
<h2>New Room</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Isikan Data</legend>
<div>
@Html.Label("Hotel Name")
</div>
<div>
@ViewBag.hotel
</div>
<br />
<div>
@Html.HiddenFor(model => model.RoomTypeID)
</div>
<br />
<div>
@Html.Label("Room Type Name")
</div>
<div>
@Html.EditorFor(model => model.RoomTypeName)
@Html.ValidationMessageFor(model => model.RoomTypeName)
</div>
<br />
<div>
@Html.Label("Room Type Description")
</div>
<div>
@Html.TextAreaFor(model => model.RoomTypeDescription)
@Html.ValidationMessageFor(model => model.RoomTypeDescription)
</div>
<br />
<table>
<thead>
<tr>
<th>Facility Name</th>
<th> is available</th>
</tr>
</thead>
<tbody>
@foreach (var facility in Model.facilitiesInRoom)
{
<tr>
<td>
@(facility.RoomFacilityName)
</td>
<td style="text-align:center;">
<input type="checkbox" @(facility.RoomFacilityAvailable ? " checked=checked" : null) name="FacilityIDs" value="@facility.RoomFacilityID" />
</td>
</tr>
}
</tbody>
</table>
<br />
<p>
<input type="submit" value="Save" />
<input style="width:100px;" type="button" title="EditHotelDetail" value="Back to Detail" onclick="location.href='@Url.Action("Room", "Hotel") '" />
</p>
</fieldset>
}
我的方法
public List<ShowEditRoomViewModel> showNewRooms()
{
List<RoomType> roomTypes = (from d in _RoomTypeRepository.All()
select d).ToList();
List<ShowEditRoomViewModel> showEditRoomViewModel = new List<ShowEditRoomViewModel>();
foreach (RoomType roomType in roomTypes)
{
showEditRoomViewModel.Add(new ShowEditRoomViewModel
{
RoomTypeID = roomType.RoomTypeID,
facilitiesInRoom = LoadFacilityInRoom()
});
}
return showEditRoomViewModel;
}
可有人告訴我,這裏是我的錯? 感謝
您使用的視圖引用了'ShowEditRoomViewModel',並且您只向我們展示了'ShowNewRoomViewModel',您還可以添加ShowEditRoomViewModel viewModel的詳細信息。那麼我認爲,你將能夠得到幫助。 –
我更新了我的新代碼,但仍然錯誤。你能解釋我,爲什麼我得到錯誤嗎?\ –
你可以發佈_roomTypeService.showNewRooms()方法嗎? 該方法是否正確填充RoomTypeId? – Ryba