我需要帮助来绑定模型中的下拉值。
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值绑定到下拉列表
的帮助答案 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 --")