1、枚举转下拉框
public static SelectList ToSelectList<TEnum>(this TEnum enumObj,
bool markCurrentAsSelected = true, int[] valuesToExclude = null) where TEnum : struct
{
if (!typeof(TEnum).IsEnum) throw new ArgumentException("An Enumeration type is required.", "enumObj");
var localizationService = EngineContext.Current.Resolve<ILocalizationService>();
var workContext = EngineContext.Current.Resolve<IWorkContext>();
var values = from TEnum enumValue in Enum.GetValues(typeof(TEnum))
where valuesToExclude == null || !valuesToExclude.Contains(Convert.ToInt32(enumValue))
select new { ID = Convert.ToInt32(enumValue), Name = enumValue.GetLocalizedEnum(localizationService, workContext) };
object selectedValue = null;
if (markCurrentAsSelected)
selectedValue = Convert.ToInt32(enumObj);
return new SelectList(values, "ID", "Name", selectedValue);
}
public static SelectList ToSelectList<TEnum>(
this TEnum enumObj,
bool markCurrentAsSelected = true,
string Value = "Id",
string Name = "Name")
where TEnum : struct
{
if (!typeof(TEnum).IsEnum)
throw new ArgumentException("An Enumeration type is required.", "enumObj");
Func<object, string> GetDisplayName = o =>
{
var result = null as string;
var display = o.GetType().
GetMember(o.ToString()).
First().GetCustomAttributes(false).
OfType<DisplayAttribute>().
LastOrDefault();
if (display != null)
{
result = display.GetName();
}
return result ?? o.ToString();
};
var values = from TEnum enumValue in Enum.GetValues(typeof(TEnum))
select new { ID = Convert.ToInt32(enumValue), Name = GetDisplayName(enumValue) };
object selectedValue = null;
if (markCurrentAsSelected)
selectedValue = Convert.ToInt32(enumObj);
return new SelectList(values, Value, Name, selectedValue);
}
var subList = FeeType.充值.ToSelectList(false);
ViewData["FeeType"] = subList;
if (ajaxPageOfSearch.FeeType != null && ajaxPageOfSearch.FeeType > 0)
{
ViewData["FeeType"] = ((FeeType)ajaxPageOfSearch.FeeType).ToSelectList(true);
}
3、前台使用
@Html.DropDownList("FeeType",null,"请选择资金类型",new { id = "FeeType", Name = "AjaxPageOfSearch.FeeType" })