使用mvc4绑定下拉列表

时间:2014-02-07 14:13:57

标签: c# asp.net-mvc asp.net-mvc-4

我需要帮助来绑定模型中的下拉值。

Model.cs

public class BloodGroup
{
    public BloodGroup()
    {
        ActionsList = new List<SelectListItem>();
    }
    [Display(Name="Blood Group")]
    public int Group { get; set; }
    public IEnumerable<SelectListItem> ActionsList { get; set; }     
}

public class ActionType
 {
     public int GroupId { get; set; }
     public string BloodGroup { get; set; } 
 }

在控制器中:

List<ActionType> actionType = GetCourses();
bGroup.ActionsList = from action in actionType
                             select new SelectListItem
                             {
                                 Text = action.BloodGroup,
                                 Value = ((int)action.GroupId).ToString(),
                                 Selected = action.BloodGroup.Equals("A+")?true:false
                             };
return view;

public List<ActionType> GetCourses()
{
        return new List<ActionType> { 
                    new ActionType () {  GroupId = 1, BloodGroup = "A+"}, 
                    new ActionType () {  GroupId = 2, BloodGroup = "B+"},
                    new ActionType () {  GroupId = 3, BloodGroup = "O+" },
                    new ActionType () {  GroupId = 4, BloodGroup = "AB+" },
                    new ActionType () {  GroupId = 5, BloodGroup = "A-"}, 
                    new ActionType () {  GroupId = 6, BloodGroup = "B-"},
                    new ActionType () {  GroupId = 7, BloodGroup = "O-" },
                    new ActionType () {  GroupId = 8, BloodGroup = "AB-" }
             };
  }

成功返回查看。但是在查看绑定下拉列表时会抛出错误。

在视图中

@model MyMVC.Models.BloodGroup

@Html.DropDownListFor(m => m.Group, new SelectList(Model.ActionsList, "Value", "Text",true), "-- Select --")</li>

它返回错误。

对象引用未设置为对象的实例。

模型 .ActionsList设置为Null。

我不知道它为什么显示null,尽管我继承了模型。

我需要有关如何将SelectList值绑定到下拉列表

的帮助

1 个答案:

答案 0 :(得分:1)

您需要将BloodGroup类的实例传递给操作方法中的视图,如下所示:

public ActionResult YourAction()
{
        List<ActionType> actionType = GetCourses();
        var model = new BloodGroup()
        {
            ActionsList = (from action in actionType
                select new SelectListItem
                {
                    Text = action.BloodGroup,
                    Value = ((int) action.GroupId).ToString(),
                    Selected = action.BloodGroup.Equals("A+")
                })
        };
        return View(model);
}

然后在你看来:

@model  BloodGroup    
@Html.DropDownListFor(m => m.Group, Model.ActionsList,"-- Select --")

注意

使用上面的示例,它会向您显示没有错误的视图,但downdownList中的所选项目 NOT 会正确显示。要正确显示所选项目,您需要将Grop属性的类型更改为String,如下所示:

public class BloodGroup
{
     //
    [Display(Name = "Blood Group")]
    public string Group { get; set; } 
    //
}

然后使用上述相同的操作方法,使您的视图如下:

@model  BloodGroup
@Html.DropDownList("Group", Model.ActionsList, "-- Select --")