我有以下代码来生成selectlistitems以显示在我的下拉列表中。
public static IEnumerable<SelectListItem> ToSelectListItems(this IEnumerable<BlogCategory> categories, int selectedId)
{
return categories.OrderBy(category => category.Category)
.Select(category => new SelectListItem
{
Selected = (category.ID == selectedId),
Text = category.Category,
Value = category.ID.ToString()
});
}
我想使用这个助手类来生成其他列表项,然后是BlogCategory。我怎么能做到这一点?
答案 0 :(得分:3)
您可以为查找实体创建基类:
public class BaseEntity
{
public int Id {get;set;}
public string Title {get;set;}
}
public class Category : BaseEntity
{
//Category fields
}
public class Blog : BaseEntity
{
//Blog fields
}
public static IEnumerable<SelectListItem> ToSelectListItems(this IEnumerable<BaseEntity> entityList, int selectedId)
{
return entityList.OrderBy(q => q.Title)
.Select(q => new SelectListItem
{
Selected = (q.Id == selectedId),
Text = q.Title,
Value = q.Id.ToString()
});
}
答案 1 :(得分:2)
尔根,
ASSUMING 你的意思是其他列表项都符合与BlogCategory相同的结构,那么你可以使用一个接口,而不是你帮手中的具体类。
这可能是这样的:
public interface ICategory
{
int ID { get; set; }
string Category { get; set; }
}
public class BlogCategory : ICategory
{
public int ID { get; set; }
public string Category { get; set; }
}
public class PostCategory : ICategory
{
public int ID { get; set; }
public string Category { get; set; }
}
等等。然后根据需要使用您的其他类对照此接口使用现有的帮助程序类:
public static IEnumerable<SelectListItem> ToSelectListItems
(this IEnumerable<ICategory> categories, int selectedId)
{
return categories.OrderBy(category => category.Category)
.Select(category => new SelectListItem
{
Selected = (category.ID == selectedId),
Text = category.Category,
Value = category.ID.ToString()
});
}
...享受