ドロップダウンリストの初期値が表示されないのはなぜですか?私が使用しているもの:
@Html.DropDownList("DropDownValues", new SelectList(ViewBag.sellectedSubjectsId, "Initial Value"));
私は何が間違っているのですか?
ドロップダウンリストの初期値が表示されないのはなぜですか?私が使用しているもの:
@Html.DropDownList("DropDownValues", new SelectList(ViewBag.sellectedSubjectsId, "Initial Value"));
私は何が間違っているのですか?
アクションメソッドとビューの間でデータを転送するために、のViewBag
ような動的なものを使用しないようにしてください。ViewData
強く型付けされたビューモデルを使用します。
ビューが、ユーザーがサブジェクトのリストから1つのサブジェクトを選択する必要がある新しいコースを作成することであると想定し、次のようなビューモデルを作成します。
public class CourseVM
{
public List<SelectListItem> Subjects { set;get;}
public int SelectedSubject { set;get;}
public CourseVM()
{
Subjects=new List<SelectListItem>();
}
}
そして、GET
アクションで、ビューモデルのオブジェクトを作成し、Subjectsプロパティに入力します。
public ActionResult Create()
{
var vm=new CourseVM();
//the below is for demo. replace with database data
vm.Subjects.Add(new SelectListItem{ Value="1", Text="Maths"});
vm.Subjects.Add(new SelectListItem{ Value="2", Text="English"});
return View(vm);
}
これで、ビューモデルに強く型付けされたビューが表示されます。
@model CourseVM
@using (Html.BeginForm())
{
//Other form elements as well
@Html.DropdownListFor(x=>x.SelectedSubject,
new SelectList(Subjects,"Value","Text"),"Select one")
<input type="submit" />
}