ASP.NET MVC получают значение из DropDownList (), используя FormCollection - PullRequest
0 голосов
/ 06 октября 2018

У меня есть простой выпадающий список в синтаксисе Razor:

@{
   List<SelectListItem> listItems = new List<SelectListItem>();
   listItems.Add(new SelectListItem { Text = "1 kg", Value = "1" });
   listItems.Add(new SelectListItem { Text = "2 kg", Value = "2" });
   listItems.Add(new SelectListItem { Text = "3 kg", Value = "3" });
   listItems.Add(new SelectListItem { Text = "4 kg", Value = "4" });
   listItems.Add(new SelectListItem { Text = "5 kg", Value = "5" });
   }
   @Html.DropDownList("Weight", (IEnumerable<SelectListItem>)listItems, new { @class = "form-control" })
   @Html.Hidden("Weight", 0)

У меня также есть действие Controller, которое получает данные из формы через FormCollection, определенное как:

    [HttpPost]
    public ActionResult AddProductsToCart(FormCollection collection /*int ?Id*/)
    {
        MyDBContext myDBContext = new MyDBContext();
        var value = collection["Weight"];
    }

Но здесь я не могу получить значение выбранного индекса в выпадающем списке в collection при отправке формы.Вместо этого я получаю 1, 1, 1 как единственный ключ в collection.

Любая идея будет оценена.:)

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

спасибо всем за ваш добрый ответ.FormCollection возвращала значения всех раскрывающихся списков.

0 голосов
/ 07 октября 2018

Когда я попробовал ваш код в приложении ASP.NET MVC 4,

HTML-код имеет два одинаковых идентификатора для двух элементов управления HTML:

@Html.DropDownList("Weight", (IEnumerable<SelectListItem>)listItems, new { @class = "form-control" })
@Html.Hidden("Weight", 0)

Поэтому при доступе к даннымиз класса FormCollection он находит два идентификатора в HTML, поэтому он разделяет каждое значение элемента управления запятой ,, например [Не знаю почему]:

enter image description here

Поэтому, если вам нужно только одно значение из View для этого конкретного элемента управления, вы можете использовать одну переменную, имя которой совпадает с именем элемента управления в методе, например:

[HttpPost]
public ActionResult AddProductsToCart(/*Might be no need of this*/ FormCollection fc, string Weight)
{
   var selectedValue = Weight;
   return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...