Как получить выбранное значение Dropdownlist в методе [HttpPost]? - PullRequest
2 голосов
/ 10 августа 2010

И снова вопрос новичка. ; -)

Я устанавливаю модель просмотра на основе этот очень полезный пост :

public class My_IndexModel
{
   ...
   public IEnumerable<SelectListItem> My_DropDownList { get; set; }   
   ...
}

Обратите внимание, что я использую

IEnumerable<SelectListItem>

, чтобы иметь возможность установить выбранное свойство.

Значения раскрывающегося списка задаются в контроллере:

public ActionResult Index()
{
     ...
     var DropDownList_Values = from value in My_DB.Value
                               select new SelectListItem
                               {
                                   Selected = (value.IsDefault == 1),
                                   Text = value.Value1,
                                   Value = value.Value1
                                };

     ...

     var viewModel = new My_IndexModel
     {  ...
        My_DropDownList = DropDownList_Values.ToList(), 
        ...
     }

     ...

     return View(viewModel);
}

Означает, что моя модель ViewData содержит (в моем случае) выпадающий список.

Также на моем сайте (* .aspx) показан выпадающий список, который выглядит так:

<%: Html.DropDownList("MyDropDownListField", 
                      new SelectList(Model.My_DropDownList as IEnumerable, 
                                     "Value",
                                     "Text", 
                                     Model.My_DropDownList
                                    )
                     )%>

Нет проблем до этого момента.

На сайте (* .aspx) у меня есть простая кнопка «отправить», которая возвращает все данные. Я получаю событие отправки здесь:

[HttpPost]
public ActionResult Index(My_IndexModel model)
{
    if (ModelState.IsValid)
    {
         ... model.My_DropDownList ...
    }
}

Но DropDownList пуст!

Что нужно сделать, чтобы получить выбранное значение выпадающего списка в методе [HttpPost]?

1 Ответ

1 голос
/ 13 августа 2010

Вам необходимо добавить свойство с тем же именем, что и DropDownList, к модели, которую вы используете в контроллере, получающем сообщение. Если имена совпадают, каркас поместит выбранное значение в соответствующее свойство модели.

Вы должны посмотреть на использование Html.DropDownListFor помощника.

Для получения дополнительной информации см. Этот вопрос, который я опубликовал некоторое время назад, когда у меня были проблемы с выяснением лучшего способа реализации DropDownList в MVC:

Лучший способ реализации DropDownList в ASP.NET MVC 2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...