如何将枚举传递给 Html.RadioButtonFor 以获取 MVC 2 RC 2、C# 中的单选按钮列表

Posted

技术标签:

【中文标题】如何将枚举传递给 Html.RadioButtonFor 以获取 MVC 2 RC 2、C# 中的单选按钮列表【英文标题】:How to pass an enum to Html.RadioButtonFor to get a list of radio buttons in MVC 2 RC 2, C# 【发布时间】:2011-01-14 10:19:57 【问题描述】:

我正在尝试使用以下行在 MVC 2 RC 2 (C#) 中呈现单选按钮列表:

<%= html.RadioButtonFor(model => Enum.GetNames(typeof(DataCarry.ProtocolEnum)),
                        null) %>

但它只是在运行时给了我以下异常:

模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。

这可能吗?如果可以,请问如何?

【问题讨论】:

【参考方案1】:

改用GetValues

【讨论】:

【参考方案2】:

您可以在 /Views/Shared/EditorTemplates/Enum.ascx 中创建一个名为“Enum”的模板

内容如下:

<%= Html.DropDownList(string.Empty, Enum.GetNames(Model.GetType()).ToList().ConvertAll(e => new SelectListItem()  Text = e.ToString(), Value = e , Selected = e.Equals(Model.ToString())))  %>

这只是枚举枚举值。

你可以用

来调用它
Html.EditorFor(m => m.YourEnumProperty, "Enum" /*The name of the template*/)

【讨论】:

当然你可以从DropDownList改变它——选择列表的生成是主要部分。 :-) 我在Html.RadioButtonFor 上没有看到等效的方法。似乎辅助方法只取一个值。是否有替代方案可以满足 OP 的要求? -1 RadioButtonRadioButtonFor 不要拿SelectListItems。

以上是关于如何将枚举传递给 Html.RadioButtonFor 以获取 MVC 2 RC 2、C# 中的单选按钮列表的主要内容,如果未能解决你的问题,请参考以下文章

将枚举传递给方法[重复]

将枚举类型传递给具有整数值的转换器[重复]

将数组常量传递给枚举构造函数[重复]

GraphQL - 将枚举值作为参数直接传递给突变?

将结构的枚举传递给其他函数并分配值

迁移到 tomcat 后,将枚举值作为参数从 JSF 页面传递给 bean 方法失败