ドロップダウン リストから選択した項目の値を取得できません。
投稿したコードの量が多くて申し訳ありませんが、非常に読みやすいコードです。
車両を編集すると、Get Edit メソッドが車両を返し、ドロップダウン リストにはビューで選択された正しい VehicleType が表示されます。
しかし
[HttpPost] Edit がモデルを取得すると、VehicleType が null になり、他のフィールド、名前、説明が正しく更新されます。
Vehicle というクラスと VehicleType というクラスがあります
public class Vehicle
{
public string Name { get; set; }
public string Description { get; set;
public virtual VehicleType VehicleType { get; set; }
}
public class VehicleType
{
public int VehicleTypeID { get; set; }
public string VehicleTypeDescription { get; set; }
}
私のコントローラーには、get および set 編集メソッドがあります
public ActionResult Edit(int id = 0)
{
Vehicle myVehicle = db.Vehicle.Find(id);
if (myVehicle == null)
{
return HttpNotFound();
}
PopulateVehicleTypeList(myVehicle.VehicleType.VehicleTypeID);
return View(myVehicle);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Vehicle myVehicle)
{
if (ModelState.IsValid)
{
db.Entry(myVehicle).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(myVehicle);
}
そして私の見解 //View @model Vehicle
<h2>Edit</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Vehicle</legend>
@Html.HiddenFor(model => model.VehicleID)
<div class="editor-label">
@Html.LabelFor(model => model.VehicleType.VehicleTypeDescription)
</div>
<div class="editor-field">
@Html.DropDownList("VehicleTypeID", String.Empty)
@Html.ValidationMessageFor(model => model.VehicleType.VehicleTypeID)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>