如何将枚举传递给 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 RadioButton
和 RadioButtonFor
不要拿SelectListItem
s。以上是关于如何将枚举传递给 Html.RadioButtonFor 以获取 MVC 2 RC 2、C# 中的单选按钮列表的主要内容,如果未能解决你的问题,请参考以下文章