我想使用枚举器填充选择器。我想在使用razor / VB或C#
的View页面中执行此操作答案 0 :(得分: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>
HTH
答案 1 :(得分:0)
对于简单的枚举名称,以下代码应该有效。
在Razor / 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
}