Как создать функциональный фильтр, используя выпадающее поле в ASP. Net? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть приложение, в котором у меня несколько раскрывающихся списков, но сейчас я сосредоточен на создании только одной работы: емкости. У меня есть жестко заданное раскрывающееся меню, в котором пользователь может выбрать желаемую емкость, и результаты вернут его после нажатия кнопки «Фильтр». Код, который у меня есть для этого, здесь:

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    var capPick = new List<SelectListItem>
    {
        new SelectListItem { Text = "Please Select A Capacity", Value = "" },
        new SelectListItem { Text = "Small", Value = "Small" },
        new SelectListItem { Text = "Medium", Value = "Medium" },
        new SelectListItem { Text = "Large", Value = "Large" }
    };

    <p>
    Size: @Html.DropDownList("size", new SelectList(sizePick, "Value", "Text"))
    </p>
}

Я установил их как «Маленький», «Средний» и «Большой», потому что таблица, из которой я получаю (называемая «ЧАШКА»), имеет их. Они перечислены в разделе «BOWL_SIZE».

Чтобы код работал, я создал указанный ниже код в своем файле HomeController.cs. Эта таблица также работает в сочетании с другой таблицей, называемой «ЦВЕТ», в которой хранится название каждого цвета вместе с идентификатором 1, 2 или 3. Я должен также подключиться к этой таблице, чтобы вернуть чаши по цвет, иначе он не будет разделять их правильно.

            //capacity declaration

            string uSize = fromBowlSearch.ViewBag.sizeList;

             //create variable
             var capPicked = db.BOWLs.Where(j => j.BOWL_SIZE == uSize);

            //create list
            List<COLOR> capResult = new List<COLOR>();

            foreach (var cap in capPicked)
            {
                COLOR model = new COLOR();
                model.COLOR_ID = size.COLOR_ID;
                var thisCapacity = from d in db.BOWLs
                               where d.BOWL_SIZE.Equals(uSize)
                               where d.BOWL_ID == cap.BOWL_ID
                               select d;
                model.BOWLs = thisCapacity.ToList();
                capResult.Add(model);
            }

Итак, мой вопрос: как извлечь выбранное значение из выпадающего списка и сохранить его в переменной? Критерии этого проекта гласят, что мне не нужно генерировать эти значения из базы данных, я должен жестко кодировать эти значения. Что у меня есть текущая настройка (которую я получил из другого рабочего элемента в моем приложении, который только что отфильтровал по одному цвету), что мне нужно сделать, чтобы он возвращал ненулевое значение? Если я пытаюсь запустить это приложение как есть, оно говорит, что значение равно «null» и «System.NullReferenceException:« Ссылка на объект не установлена ​​на экземпляр объекта. ».

И для Самая загадочная причина, независимо от того, какой выпадающий список я бы выбрал для приложения, он всегда выдает ошибку с той же самой ошибкой и также заявляет: «ошибка CS0103: имя« capPicked »не существует в текущем контексте». Единственное место, которое я объявил во всем приложении, - это две строки в моем файле homecontroller, и нигде больше я не могу даже прокомментировать весь раздел о емкости, и он все равно выдаст ту же ошибку. Как бы оно ему понадобилось, если бы ему не сказали искать его? Если вы можете дать какое-то руководство, это будет высоко ценится.

...