MVC3 Razor DropDownListFor Перечисления - PullRequest
84 голосов
/ 11 января 2011

Попытка обновить мой проект до MVC3, чего я просто не могу найти:

У меня есть простой тип данных ENUMS:

public enum States()
{
  AL,AK,AZ,...WY
}

, который я хочу использовать в качестве DropDown / SelectList в моем представлении модели, содержащей этот тип данных:

public class FormModel()
{
    public States State {get; set;}
}

Довольно просто: когда я использую автоматическое представление для этого частичного класса, оно игнорирует этот тип.

Мне нужен простой список выбора, который устанавливает значение enum в качестве выбранного элемента, когда я нажимаю на submit и обрабатываю с помощью моего метода AJAX - JSON POST.

А чем мнение (???!):

    <div class="editor-field">
        @Html.DropDownListFor(model => model.State, model => model.States)
    </div>

Заранее спасибо за совет!

Ответы [ 13 ]

1 голос
/ 02 февраля 2016

Это наиболее общий код, который будет использоваться для всех перечислений.

public static class UtilitiesClass
{

    public static SelectList GetEnumType(Type enumType)
    {
        var value = from e in Enum.GetNames(enumType)
                    select new
                    {
                        ID = Convert.ToInt32(Enum.Parse(enumType, e, true)),
                        Name = e
                    };
        return new SelectList(value, "ID", "Name");
    }
}

Метод действия

ViewBag.Enum= UtilitiesClass.GetEnumType(typeof (YourEnumType));

View.cshtml

 @Html.DropDownList("Type", (IEnumerable<SelectListItem>)ViewBag.Enum, new { @class = "form-control"})
1 голос
/ 14 октября 2014

Самый простой ответ в MVC5 - Определить Enum:

public enum ReorderLevels {
          zero = 0,
            five = 5,
            ten = 10,
            fifteen = 15,
            twenty = 20,
            twenty_five = 25,
            thirty = 30
        }

Bind In View:

        <div class="form-group">
            <label>Reorder Level</label>
            @Html.EnumDropDownListFor(m => m.ReorderLevel, "Choose Me", new { @class = "form-control" })
        </div>
1 голос
/ 15 января 2014

вы можете использовать enum в вашей модели

ваш Enum

public enum States()
{
  AL,AK,AZ,...WY
}

сделать модель

public class enumclass
{
public States statesprop {get; set;}
}

в поле зрения

@Html.Dropdownlistfor(a=>a.statesprop)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...