将通用模型添加到帮助程序类

时间:2012-07-20 13:12:26

标签: asp.net-mvc-3 html-helper

我有以下代码来生成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。我怎么能做到这一点?

2 个答案:

答案 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()
        });
}

...享受