如何使用实体框架将列表读入扩展SelectListItem类
本文关键字:扩展 SelectListItem 列表 何使用 实体 框架 | 更新日期: 2023-09-27 18:08:44
我正在使用c#, MVC和EF6在VS 2015中开发。我目前使用以下方式生成选择列表内容:
IEnumerable<SelectListItem> slist = new SelectList(dbContext.UserCategories
.Where(x => x.DisplayOrder > 0)
.OrderBy(x => x.UserCategoryType)
.ThenBy(x => x.DisplayOrder)
.ToList(), "UserCategoryID", "Category");
我需要扩展SelectListItem
类如下:
public class ExtendedSelectListItem : SelectListItem
{
public string HtmlAttribute { get; set; }
public ExtendedSelectListItem()
{
}
}
我的问题是,如何修改EF表达式来为新类生成合适的结果。(请注意字段UserCategoryID
是一个int
)
我不知道有任何要求,使SelectList
,所以你可以:
vars list = dbContext.UserCategories
.Where(x => x.DisplayOrder > 0)
.OrderBy(x => x.UserCategoryType)
.ThenBy(x => x.DisplayOrder)
.ToList()
.Select(uc => new ExtendedSelectListItem()
{
HtmlAttribute = "form-control",
Value = uc.UserCategoryID.ToString(),
Text = uc.UserCategoryType
})
.ToList()
类似的东西适用于Html.DropDownListFor()
等(然而,HtmlAttribute
是DropDownListFor
和其他内置方法未知的,所以它不会呈现任何东西,除非你自己编写知道如何使用ExtendedSelectListItem
的方法)。