我想使用枚举器填充选择器。我想用razor/VB或C#在View页面做这个操作
问问题
624 次
2 回答
1
如果您有一个类似下面的枚举,那么您可能更喜欢将名称拆分为大写字母。
public enum Gender
{
NotSpecified = 0,
Male,
Female
}
这是拆分并返回 SelectList 以在 UI 中显示枚举但将所选值作为模型中的枚举返回的代码。
拆分逻辑来自 SO post之一。感谢海报。
public class EnumHelper
{
public static SelectList GetSelectList<T>()
{
Type enumType = typeof(T);
if (!enumType.IsEnum)
throw new ArgumentException("The specified type is not enum");
List<SelectListItem> items = new List<SelectListItem>();
var values = Enum.GetValues(enumType);
foreach (var value in values)
{
items.Add(new SelectListItem()
{
Value = value.ToString(),
// Split at capital letters
Text = Regex.Replace(Enum.GetName(enumType, value), "([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", "$1 ")
});
}
return new SelectList(items, "Value", "Text");
}
剃刀中的示例用法如下
<div class="editor-label">
@Html.LabelFor(model => model.Gender)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Gender, EnumHelper.GetSelectList<Gender>())
@Html.ValidationMessageFor(model => model.Gender)
</div>
高温高压
于 2012-06-04T11:03:09.793 回答
0
对于简单的枚举名称,以下代码应该可以工作。
在剃刀/C#
<tr>
<th>
<div class="editor-label">
@Html.LabelFor(model => model.Gender)
</div>
</th>
<td>
<div class="editor-field">
@Html.DropDownListFor(model => model.Gender, new SelectList(Enum.GetValues(typeof(Gender))))
@Html.ValidationMessageFor(model => model.Gender)
</div>
</td>
</tr>
我的枚举很简单,像这样
public enum Gender
{
Male,
Female
}
于 2012-06-04T10:42:49.210 回答