Как выбрать элементы в раскрывающемся списке из контроллера?

#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.

введите описание изображения здесь