#asp.net-core-mvc #asp.net-core-3.1
Вопрос:
В моем приложении у меня есть список с несколькими вариантами выбора, который заполняется списком фруктов
public ActionResult Index(int? userId) { viewModel.FruitSelectList = viewModel.FruitList.Select(item =gt; new SelectListItem { Value = item.iFruitID.ToString(), Text = item.sFruitName }).ToList(); return View(); }
Для справки вот как выглядит моя модель:
public class Fruit { public int FruitID {get; set;} public string FruitName {get; set;} public int UserID {get; set;} }
Мне нужно вернуть все элементы в базе данных, которые соответствуют userId
var result = (from u in db.Fruit where u.UserID == userId select u).ToList();
Но как мне отобразить result
выбранные элементы в качестве в моем раскрывающемся списке?
Комментарии:
1. Трудно понять, чего ты хочешь. Можете ли вы опубликовать пример, пожалуйста
2. @Serge Я говорю, что у меня есть список избранных фруктов, и я хочу показать список фруктов, которые находятся в
result
списке, как выбранные в этом списке(выпадающем списке).3. Я не вижу никакой модели просмотра и никакого списка фруктов
Ответ №1:
Вы не показываете iFruitID
, sFruitName
и viewModel
в вашем коде,поэтому я изменил некоторые коды, чтобы добиться желаемого эффекта.Вот мой код:
Контроллер:
//I don't know what's the `viewModel`,so I just create a `viewModel` class in controller public class viewModel { public Listlt;SelectListItemgt; FruitSelectList { get; set; } public Listlt;Fruitgt; FruitList { get; set; } } public ActionResult Index(int? userId) { var data = new Listlt;Fruitgt;() { new Fruit() { FruitID = 0, FruitName = "Apple", UserID = 1 }, new Fruit() { FruitID = 1, FruitName = "pear", UserID = 1 }, new Fruit() { FruitID = 2, FruitName = "watermelon", UserID = 2 }, new Fruit() { FruitID = 3, FruitName = "cherry", UserID = 2 }, }; //For the convenience of testing, I hard-coded here,so I just select from `data`,If you want select from database,just use your original linq var result = data; if (userId != null) { result = result.Where(u =gt; u.UserID == userId).ToList(); } viewModel viewModel = new viewModel(); viewModel.FruitList = result; //because you don't show the `iFruitID` and `sFruitName`,I just use FruitID and FruitName To replace them. viewModel.FruitSelectList = viewModel.FruitList.Select(item =gt; new SelectListItem { Value = item.FruitID.ToString(), Text = item.FruitName }).ToList(); return View(viewModel); }
Вид:
@model DropdownList.Controllers.HomeController.viewModel lt;select asp-items="@Model.FruitSelectList"gt; lt;/selectgt;
Страница:
1.Когда в метод не передается идентификатор пользователя, в раскрывающемся списке отображаются все параметры
2.когда идентификатор пользователя = 1, в раскрывающемся списке отображаются только параметры, для которых их идентификатор пользователя=1.