【发布时间】:2014-04-03 10:48:06
【问题描述】:
我正在尝试为枚举类型提供通用视图模型和编辑器模板,以将可能的值呈现到单选按钮组中。让我详细说明。
虚拟机看起来像这样
public class OptionViewModel<TEnum> where TEnum : struct, IConvertible
{
public TEnum SelectedValue { get; set; }
}
然后我可以通过编写为我的项目中的任何枚举创建一个实例
public enum Numbers { One, Two, Three }
...
NumberOptions = new OptionViewModel<Numbers>();
...
然后通过
渲染@model OptionViewModel<TEnum>
@foreach (var value in Enum.GetValues(typeof(TEnum)).Cast<TEnum>())
{
var selected = value == Model.SelectedValue;
@Html.RadioButton(value.ToString(), value, selected)
}
不幸的是,模板甚至无法编译,因为当然没有类型 'TEnum'。
有没有更好的(可行的)方法来做到这一点?我真的会得到这种抽象级别,因为来自枚举的单选按钮组在我的项目中是相当常见的情况,并且它带有其他属性,例如 IsVisible、IsEnabled 等。
【问题讨论】:
标签: c# asp.net-mvc enums