为什么我的下拉列表的初始值没有显示?

时间:2012-12-17 02:39:49

标签: asp.net-mvc

为什么我的下拉列表的初始值没有显示? 我正在使用

@Html.DropDownList("DropDownValues", new SelectList(ViewBag.sellectedSubjectsId, "Initial Value")); 

我做错了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尽量避免使用ViewBagViewData之类的动态内容来在操作方法和视图之间传输数据。使用强类型视图模型。

假设您的视图是创建一个新课程,用户必须从主题列表中选择一个主题,创建一个这样的视图模型

public class CourseVM
{
  public List<SelectListItem> Subjects { set;get;}
  public int SelectedSubject { set;get;}
  public CourseVM()
  {
    Subjects=new List<SelectListItem>();
  }
}

GET操作中,创建视图模型的对象并填充“主题”属性。

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" />
}