我创建了一个自定义属性,用于定义该属性在DropDownList中使用。所以属性的代码是这样的:
class TestViewModel
{
[DropDownList(typeof(MyEnums.EnumTest)]
public int MyProp {get; set;}
}
我无法通过枚举作为参数,我只能这样做通过枚举类型,如下所示:
public HtmlString AddSelectFor<TValue>(Expression<Func<TModel, TValue>> expression)
{
var memberExpression = expression.Body as MemberExpression;
var attribute = memberExpression.Member.GetCustomAttributes(typeof(MyProj.Attributes.DropDownList), false).FirstOrDefault() as MyProj.Attributes.DropDownList;
// HERE i need to get the list of enum itens
var items = Enum.GetValues(attribute.EnumType);
return HtmlHelper.DropDownListFor(expression, list);
}
我有一个HTML扩展,需要像这样工作:
{{1}}
问题是我没有枚举,我只有类型,因为它需要是通用的。因此,我无法进行强制转换以创建所需的列表作为&#34; HtmlHelper.DropDownListFor&#34;的参数。
答案 0 :(得分:1)
我解决了它,只使用&#34; Enum&#34;,然后选择一个SelectListItem传递给DropDownList:
var enumList = Enum.GetValues(attribute.EnumType).Cast<Enum>().Select(x => new SelectListItem(){
Text = x.ToString(),
Value = Convert.ToInt32(x).ToString()
});
感谢。