Asp.net mvc 3 将泛型模型添加到帮助器类
我有以下代码来生成selectlistitems以显示在我的dropdownlist中Asp.net mvc 3 将泛型模型添加到帮助器类,asp.net-mvc-3,html-helper,Asp.net Mvc 3,Html Helper,我有以下代码来生成selectlistitems以显示在我的dropdownlist中 public static IEnumerable<SelectListItem> ToSelectListItems(this IEnumerable<BlogCategory> categories, int selectedId) { return categories.OrderBy(category => category.Category
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()
});
}
公共静态IEnumerable到SelectListItems(此IEnumerable类别,int-selectedId)
{
returncategories.OrderBy(category=>category.category)
.选择(类别=>new SelectListItem
{
选定=(category.ID==selectedId),
Text=category.category,
Value=category.ID.ToString()
});
}
我想使用这个助手类来生成其他列表项,然后再创建一个类别。如何实现这一点?您可以为查找实体创建基类:
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()
});
}
公共类基本实体
{
公共int Id{get;set;}
公共字符串标题{get;set;}
}
公共类类别:BaseEntity
{
//类别字段
}
公共类博客:BaseEntity
{
//博客字段
}
公共静态IEnumerable to SelectListItems(此IEnumerable entityList,int-selectedId)
{
返回entityList.OrderBy(q=>q.Title)
.选择(q=>new SelectListItem
{
所选=(q.Id==selectedId),
Text=q.标题,
Value=q.Id.ToString()
});
}
您可以为查找实体创建基类:
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()
});
}
公共类基本实体
{
公共int Id{get;set;}
公共字符串标题{get;set;}
}
公共类类别:BaseEntity
{
//类别字段
}
公共类博客:BaseEntity
{
//博客字段
}
公共静态IEnumerable to SelectListItems(此IEnumerable entityList,int-selectedId)
{
返回entityList.OrderBy(q=>q.Title)
.选择(q=>new SelectListItem
{
所选=(q.Id==selectedId),
Text=q.标题,
Value=q.Id.ToString()
});
}
Jurgen
假设您的意思是其他列表项都符合与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()
});
}
公共静态IEnumerable to SelectListItems
(此IEnumerable categories,int-selectedId)
{
returncategories.OrderBy(category=>category.category)
.选择(类别=>new SelectListItem
{
选定=(category.ID==selectedId),
Text=category.category,
Value=category.ID.ToString()
});
}
享受…尤尔根
假设您的意思是其他列表项都符合与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()
});
}
公共静态IEnumerable to SelectListItems
(此IEnumerable categories,int-selectedId)
{
returncategories.OrderBy(category=>category.category)
.选择(类别=>new SelectListItem
{
选定=(category.ID==selectedId),
Text=category.category,
Value=category.ID.ToString()
});
}
享受…efe——伟大的头脑。我打算用接口而不是基本类来发表我的观点——伟大的头脑。我正要用接口而不是基类来发表我的观点