ASP.NET MVC 2 - Как я могу использовать DropDownListFor? - PullRequest
5 голосов
/ 09 июня 2010

У меня есть простая модель / представление с такими вещами, как имя пользователя, пароль и т. Д., И я отлично использую помощники, чтобы подключить ее.

Теперь у меня есть поле с именем NumberOfChildren. Я хочу сохранить в нем число (int) и отобразить раскрывающийся список, содержащий «None», «1», «2» и т. Д.

Я думаю, что модель будет иметь список или метод, который возвращает список, поэтому я могу указать такие значения, как NumberOfChildren_List, в который я помещаю данные, а затем DropDownListFor извлекает этот список и отображает его, сопоставляя значение к значению элемента в раскрывающемся списке.

Однако, потратив около 30 минут на то, чтобы понять, как это работает, я сдался и решил спросить здесь. Есть идеи?

Редактировать: вот код ...

<%: Html.DropDownListFor(m => m.NumberOfChildren, new SelectList(Model.NumberOfChildrenListValues))%>

и в модели

        [Required]
        [DisplayName("How many children do you have?")]
        public string NumberOfChildren { get; set; }

        public IEnumerable<string> NumberOfChildrenListValues
        {
            get
            {
                List<string> list = new List<string>() { "None", "1", "2" };

                return list;
            }

            set
            {

            }

        }

Я получаю объект не установлен в экземпляр ошибки объекта, хотя. Идеи?

1 Ответ

2 голосов
/ 09 июня 2010

Попробуйте вот так (вам нужно установить текст и значение для каждого параметра - текст будет использоваться для визуализации в раскрывающемся списке, а значение будет использоваться для привязки к выбранному элементу NumberOfChildren свойство):

[Required]
[DisplayName("How many children do you have?")]
public string NumberOfChildren { get; set; }

public IEnumerable<SelectListItem> NumberOfChildrenListValues
{
    get
    {
        return new[]
        {
            new SelectListItem { Value = "0", Text = "None" },
            new SelectListItem { Value = "1", Text = "1" },
            new SelectListItem { Value = "2", Text = "2" },
        };
    }
}

и затем:

<%: Html.DropDownListFor(
    m => m.NumberOfChildren, 
    Model.NumberOfChildrenListValues
) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...