Я работаю над веб-сайтом ASPNet Core 2.1 MVC и пытаюсь получить список выбора, чтобы заполнить его списком компаний (значение = Id, текст = CompanyName).Я вижу, что данные существуют в списке в ViewModel, но, что бы я ни пытался, я не могу отобразить данные в раскрывающемся списке в представлении.
Я следую за первым вариантомрекомендация SelectList от этого SO сообщения
Вот мой класс EditSite ViewModel
public class EditSite
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 2)]
[Display(Name = "Site Name")]
public string SiteName { get; set; }
[Display(Name = "Enabled")]
public bool IsEnabled { get; set; }
public string ReturnUrl { get; set; }
public List<CompanySelect> CompanyList { get; set; }
}
Вот мой класс модели CompanySelect
public class CompanySelect
{
public int Id { get; set; }
public string CompanyName { get; set; }
}
Здесьмое действие «Редактировать» в контроллере сайтов;
public async Task<IActionResult> Edit([FromQuery] int id, string returnUrl = null)
{
await SetCurrentUser();
ViewData["Role"] = _currentRole;
var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;
var response = await _client.GetSiteAsync(id, $"api/companies/{SetCompanyId()}/sites/{id}", token);
if (response == null)
{
return NotFound($"Unable to find a record for Company ID [{id}].");
}
var site = _mapper.Map<EditSite>(response.Site);
if (_currentRole != UserRoles.SysAdmin) return View(site);
site.CompanyList = await GetCompaniesForSelectList();
return View(site);
}
Вот снимок экрана при отладке, показывающий, что site.CompanyList заполнен данными.
Вот выбор в моем моем представлении
<div class="form-group">
<label asp-for="CompanyName"></label>
<select asp-for="Id" asp-item="@(new SelectList(Model.CompanyList, "Id","CompanyName"))" class="form-control">
<option>Please select a Company</option>
</select>
</div>
Вот снимок экрана, показывающий, что модель представления содержит данные, заполненные в этой точке в представлении.
А вот скриншот, когда я открываю раскрывающийся список на веб-странице, без каких-либо компаний.
Кажется, это должно быть очень прямым.Что мне здесь не хватает?