私は初心者で、おそらく明らかな何かが欠けています。(以下のコードを参照) Initializer.cs が機能するのは、Create.cshtml を実行すると、プルダウン項目 "Regular" と "Comm" が正しく表示されるためです。ただし、Create.cshtml は機能しません。プルダウン フィールドは空白のままですが、スカラー フィールドは正しく読み込まれます。
私はこのフォーラム (および他のフォーラム) で返信を確認するのに何時間も費やし、無数の提案を試みましたが、すべて役に立ちませんでした。たとえば、コントローラーとドロップダウンリストで同じ名前を使用していることが問題であると何人かの人々が言いました。その変更を行いましたが、Create.cshtml はまだ機能しません。コードは次のとおりです。
Models.Flight.cs
public virtual ICollection<FlightType> FlightTypes { get; set; }
Models.FlightType.cs
public class FlightType
{
[Key]
public int FlightTypeID { get; set; }
public string FlightTypeEntry { get; set; }
}
DAL.FlightInitializer.cs
var flighttypes = new List<FlightType>
{
new FlightType { FlightTypeID = 1, FlightTypeEntry = "Regular" },
new FlightType { FlightTypeID = 2, FlightTypeEntry = "Comm" }
};
flighttypes.ForEach(e => context.FlightType.Add(e));
context.SaveChanges();
Controllers.FlightController.cs
// GET: /Flight/Create
public ActionResult Create()
{
ViewBag.FlightTypeVB = new SelectList(db.FlightType, "FlightTypeID", "FlightTypeEntry");
return View();
}
// POST: /Flight/Create
[HttpPost]
public ActionResult Create(Flight flight)
{
if (ModelState.IsValid)
{
db.Flight.Add(flight);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.FlightTypeVB = new SelectList(db.FlightType, "FlightTypeID", "FlightTypeEntry");
return View(flight);
Views.Flight.Create.cshtml
<div class="editor-label">
@Html.LabelFor(model=>model.AircraftModels)
</div>
<div class="editor-field">
@Html.DropDownList("AircraftModelID", (IEnumerable<SelectListItem>)ViewBag.AircraftModelVB)
@Html.ValidationMessageFor(model => model.AircraftModels)
</div>
ご提案いただきありがとうございます。