0

列挙子を使用してセレクターを埋めたい。かみそり/VBまたはC#を使用してビューページでこの操作を実行したい

4

2 に答える 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 に答える