次のビューコード(ASP:NET MVC 3)があります。
@using(Html.BeginForm()){
@Html.ValidationSummary(true)
<table>
<tr>
<th>
City
</th>
<th>
Hotel
</th>
<th>
Room name
</th>
<th>
Number of beds
</th>
<th>
Price per night
</th>
<th></th>
</tr>
<tr>
<td>
@Html.DisplayFor(x=>Model.SelectedRoom.Hotel.City.Name)
</td>
<td>
@Html.DisplayFor(x => Model.SelectedRoom.Hotel.Name)
</td>
<td>
@Html.DisplayFor(x => Model.SelectedRoom.Name)
</td>
<td>
@Html.DisplayFor(x => Model.SelectedRoom.NumberOfBeds)
</td>
<td>
@Html.DisplayFor(x => Model.SelectedRoom.PricePerNight)
</td>
</tr>
</table>
<input type="hidden" name="RoomID" value="@Model.SelectedRoom.RoomID" id="RoomID" />
<br />
<br />
<p>
From: @Html.TextBoxFor(m=>m.DateOne, new {@class="datepicker1", @readonly="readonly" })
@Html.ValidationMessageFor(m=>m.DateOne)
To: @Html.TextBoxFor(m => m.DateTwo, new { @class = "datepicker2", @readonly = "readonly" })
@Html.ValidationMessageFor(m=>m.DateTwo)
</p>
<p>
Total cost : @Html.TextBoxFor(m=>m.TotalCost, new {@class="TotalAmount", @readonly="readonly" })
</p>
<br />
<input type="button" id="Reserve" value="Confirm" onclick = "window.location.href='/Home/MakeReservation'+@Model" />
}
このビューのモデル定義は次のとおりです。
public class MakeReservationViewModel
{
BusinessLogic bl;
public MakeReservationViewModel()
{
bl = new BusinessLogic();
}
public Room SelectedRoom { get; set; }
[Required(ErrorMessage="Please select a starting date")]
public DateTime DateOne { get; set; }
[Required(ErrorMessage = "Please select an ending date")]
public DateTime DateTwo { get; set; }
public decimal TotalCost { get; set; }
}
呼び出す方法*上からMakeReservationコントローラーアクションボタンをクリックし、MakeReservationへのonclick属性を適切に設定して表示しますか?*これが私のコントローラーです:
[HttpPost]
public ViewResult MakeReservation(MakeReservationViewModel mrvm)
{
if (ModelState.IsValid)
{
}
return View();
}
これはエラーです:オブジェクト参照がオブジェクトのインスタンスに設定されていません。この行で: モデルに隠しフィールドを受け入れさせる方法は?
解決しました。追加した :
@Html.TextBoxFor(m => m.SelectedRoom.RoomID, new {@class="RoomID", @hidden="hidden" })
強く型付けされていないプロパティを使用していた以前の方法の代わりに。