他の複雑なクラスのオブジェクトを保持するクラスを作成しました。
たとえば
class A {
public int ID { set; get; }
public string MyObjectName {set; get; }
public B ObjectOfTypeB { set; get; }
}
class B {
public int ID { set; get; }
public int CategoryNumber { set; get; }
public string CategoryDescription { set; get; }
}
これで、タイプ A のオブジェクトを作成するコントローラー メソッドができました。モデル (クラス A) を作成するためのビューを足場にしました。しかし、A は複合型を保持しているため、B 型の入力フィールドを作成する方法がわかりません。
私の作成機能では
// helper method to get a list of the possible B objects -
// this method will eventually query a database. for now just static objects
private List<Category> getBobjects()
{
List<B> bs = new List<B>();
bs.Add(new B() { ID = 1, CategoryNumber = 2, CategoryDescription = "Config 1" });
bs.Add(new B() { ID = 2, CategoryNumber = 3, CategoryDescription = "Config 2" });
return bs;
}
[HttpGet]
public ActionResult Create()
{
// Adding to the view bags the categories to display
ViewBag.bs = getBobjects();
return View();
}
そしてビューで
@Html.DropDownListFor(model => model.ObjectOfTypeB,
new SelectList(ViewBag.bs, "ID", "CategoryDescription"))
フォームを送信すると、ObjectOfTypeB のデータがタイプ A のポスト バック オブジェクトにバインドされると想定しましたが、そうではありません。
特定のフィールドの可能な値のリストをビューに渡し、ポストバックで値を返されたオブジェクトにバインドする方法を誰か説明できますか?
[バグ印刷画面][1]