C#:如何用对象填充DropDownList?

时间:2015-03-31 13:33:29

标签: c# asp.net-mvc

我遇到了一些问题。 我刚刚创建了一个名为Student的类,它有一个其他类对象,它是Batch as

public class Student{
      public Batch batch {get;set;}
      public string Name{get;set;}
      public string CNIC {get;set;}
}

这是批次类

public class Batch {
      public string BatchName {get;set;}
      public int BatchYear {get;set;}
}

我为Student类创建了一个强类型视图,现在我应该如何使用DropdownListFor方法帮助器显示带有User的批处理对象。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

DropDownListFor需要List<SelectListItem>并将其转换为列表。因此,您需要构建List<SelectListItem>并将其传递给View模型中的视图。您将无法直接在DropDownListFor课程中使用batch

要显示批次类的下拉列表,请尝试以下内容

public class Student{

      public Student()
      {
          BatchSelectList = new List<SelectListItem>();
          BatchSelectList.Add(new SelectListItem { Text = "Some Label", Value = "Some Val" };
      }

      public Batch batch {get;set;}
      public string Name{get;set;}
      public string CNIC {get;set;}

      //Drop down properties used in view
      public String BatchSelectedItem { get; set; }
      public List<SelectListItem> BatchSelectList { get; set; }
}

通过上述内容,您将为列表BatchSelectedItem中选择的项目构建占位符,并且您还在构建将在视图中使用的选择列表。

在您看来,您需要以下内容。

@Html.DropDownListFor(x => x.BatchSelectedItem, Model.BatchSelectList)

第一个选项是选择列表绑定的属性,第二个属性是填充DropDownListFor

的对象列表

答案 1 :(得分:-1)

您可以在学生模型中创建批处理列表

public class Student{
      public Batch batch {get;set;}
      public string Name{get;set;}
      public string CNIC {get;set;}
      public List<Batch> batchList {get;set;}
}

然后在您的模型上,您可以将DropDownList设置为:

@Html.DropDownListFor(model => model.batch, new SelectList(Model.batchList,"BatchYear","BatchName"))

在上面的代码中,您设置批处理的DDL由batchList填充,显示BatchName并将值设置为BatchYear。