Не удается неявно преобразовать тип «List‹System.Web.Mvc.SelectListItem› в IEnumerable‹Microsoft.AspNetCore.Mvc.Rendering.SelectListItem›»

В моем представлении cshtml у меня есть этот готовый (скаффолд) код, который я немного изменил, чтобы иметь возможность поместить туда список перечислений вместо текстового поля:

 <div class="form-group">
                <label asp-for="Color" class="control-label"></label>
                <select asp-for="Color" asp-items="Model.Colors" class="form-control"></select> 
                <span asp-validation-for="Color" class="text-danger"></span>
  </div>

Ошибка возникает в Model.Colors.

И в моей модели я пытался сделать: Colors.Add(new List<SelectListItem>()); как сказано в Невозможно неявно преобразовать тип "System.Web.Mvc.SelectList" в "System.Collections.Generic.ICollection‹System.Web.Mvc.SelectList›", но я бы получить другую ошибку; Невозможно неявно преобразовать System.Collections.Generic.List в System.Web.Mvc.SelectListItem.

Хотя Colors это List<SelectListItem>.

Но до этого у меня было это в ViewModel:

public EnumsDTO.Color Color { get; set; }
public List<SelectListItem> Colors { get; set; }
public void AddColorViewModel()
{
    Colors = new List<SelectListItem>();
    foreach (Color c in (Color[])Enum.GetValues(typeof(Color)))
    {
        Colors.Add(new SelectListItem
        {
            Value = ((int)c).ToString(),
            Text = c.ToString()
        });
    }
}

Я пытался следовать этому руководству: https://www.youtube.com/watch?v=MPJ9PPCWxoI


person Zheng-rong Cai    schedule 12.11.2019    source источник
comment
Пожалуйста, предоставьте воспроизводимый пример, этот код не ясен, поэтому трудно точно понять, в чем проблема.   -  person Kieran Devlin    schedule 12.11.2019
comment
явно неправильный using вверху файла   -  person Selvin    schedule 12.11.2019
comment
@KieranDevlin Я следил за этим руководством, но показывать весь код - это слишком, потому что они не имеют к этому никакого отношения. Но в основном все идет не так, когда парень в учебнике пытается получить метод de для cshtml-файла с помощью asp-items = Model.etc   -  person Zheng-rong Cai    schedule 12.11.2019
comment
@Selvin Что using мне нужно?   -  person Zheng-rong Cai    schedule 12.11.2019


Ответы (1)


Скорее всего, у вас using System.Web.Mvc пространство имен в вашей модели вверху файла. Пока там существует SelectListItem, тот, который ожидается в представлении, относится к пространству имен Microsoft.AspNetCore.Mvc.Rendering.

Поэтому есть 2 пути решения проблемы:

Опция 1

  1. Избавьтесь от using System.Web.Mvc;
  2. Добавить using Microsoft.AspNetCore.Mvc.Rendering;

Вариант 2

  1. Измените соответствующие вхождения SelectListItem в вашей модели на Microsoft.AspNetCore.Mvc.Rendering.SelectListItem
person Elhitch    schedule 10.06.2020