Do tnet core - Как преобразовать Queryable <string>в SelectList для использования в раскрывающемся списке? - PullRequest
0 голосов
/ 07 апреля 2020
 <TargetFramework>netcoreapp3.1</TargetFramework>
 <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" />

У меня есть представление, которое выдает список уникальных городов в алфавитном порядке.

Модель:

public class dgTown
    {
        [Key]
        public string town { get; set; }
    }

Просмотр модели:

public List<SelectList> dgTowns { get; set; }
public string TownSelection { get; set; }

Контекст базы данных:

public DbSet<dgTown> vtown { get; set; }

Контроллер:

var townQuery = _context.vtown.Select(t => t.town);

Как преобразовать полученный EntityQueryable в список SelectList, чтобы раскрывающийся список мог использовать его?

 <select asp-for="TownSelection" asp-items="Model.dgTowns">
   <option value="">All</option>
 </select>

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Спасибо за ответ! Вот что я нашел для работы: 1. Удалить список в модели,

public SelectList Town { get; set; }
В контроллере возьмите результаты запроса и приведите его как IQueryable `
 public async Task<IActionResult> Meetings()
        {
           ...
           IQueryable<string> townQuery = from lst in _context.vtown
                                           orderby lst.town
                                           select lst.town;
          ...
          // Load the view model
          var dgListView = new pgListView
            {   
              ...
              Town = new SelectList(await townQuery.ToListAsync()),
               DgLists = await list.ToListAsync()
            };

Теперь его можно использовать на странице бритвы.

Town:
<select asp-for="TownSelection" asp-items="Model.Town">
   <option value="">All</option>
</select>
0 голосов
/ 08 апреля 2020

Пожалуйста, прочитайте документацию Microsoft о выпадающем меню.

Пример:

Просмотр модели:

public class YourModel{
  public List<SelectListItem> dgTowns { get; set; }
  public string TownSelection { get; set; }
}

Контроллер:

  public Task<IActionResult> YourActin()
        {
            var model = new YourModel();
            model.dgTowns=await _context.vtown
                         .Select(t => new SelectListItem 
                           { 
                             Text = t.town,
                             Value =t.town 
                            })
                         .ToListAsync();
            return View(model);
        }

Просмотр:

<select asp-for="TownSelection" asp-items="Model.dgTowns" class="form-control"></select>
...