列挙子を使用してセレクターを埋めたい。かみそり/VBまたはC#を使用してビューページでこの操作を実行したい
2 に答える
1
以下のような列挙型がある場合は、名前を大文字で分割することをお勧めします。
public enum Gender
{
NotSpecified = 0,
Male,
Female
}
分割してSelectListを返し、UIに列挙型を表示し、選択した値をモデルの列挙型として取得するコードを次に示します。
分割ロジックは、SOポストの1つからのものです。ポスターに感謝します。
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
于 2012-06-04T11:03:09.793 に答える
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
}
于 2012-06-04T10:42:49.210 に答える