У меня есть приложение, в котором у меня несколько раскрывающихся списков, но сейчас я сосредоточен на создании только одной работы: емкости. У меня есть жестко заданное раскрывающееся меню, в котором пользователь может выбрать желаемую емкость, и результаты вернут его после нажатия кнопки «Фильтр». Код, который у меня есть для этого, здесь:
@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, и нигде больше я не могу даже прокомментировать весь раздел о емкости, и он все равно выдаст ту же ошибку. Как бы оно ему понадобилось, если бы ему не сказали искать его? Если вы можете дать какое-то руководство, это будет высоко ценится.