При использовании стандартных скаффолдингов индексы отображаются только в выпадающих списках связанных таблиц. Как отобразить несколько полей, чтобы выпадающий список имел смысл?
Я попытался использовать решение, описанное Shyju в разделе «Получение данных из вашей таблицы базы данных с использованием структуры сущностей». ( Выберите Tag Helper в ASP.NET Core MVC ).
У меня есть 2 класса в модели (Книги с соответствующим автором):
namespace SimpleAppwithTwoTables.Data
{
public class Book
{
public int BookID { get; set; }
[StringLength(255)]
[Display(Name ="Book Title")]
public string Title { get; set; }
public int AuthorID { get; set; }
public Author Author { get; set; }
}
}
и
namespace SimpleAppwithTwoTables.Data
{
public class Author
{
public int AuthorID { get; set; }
[Display(Name = "First Name")]
[StringLength(50)]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[StringLength(50)]
public string LastName { get; set; }
public ICollection<Book> Books { get; set; } = new List<Book>();
}
}
В BooksController есть метод Create (), похожий на тот, который был описан в посте Shyju.
public IActionResult Create()
Author vm = new Author();
vm.Books = _context.Book.Select(a => new SelectListItem()
{ Value = a.AuthorID.ToString(), Text = a.Author.LastName }).ToList();
return View(vm);
}
Эта строка в контроллере
vm.Books = _context.Book.Select(a => new SelectListItem()
{ Value = a.AuthorID.ToString(), Text = a.Author.LastName }).ToList();
Генерирует эту ошибку:
"Невозможно неявно преобразовать тип
'System.Collections.Generic.List '
в
'System.Collections.Generic.ICollection '.
Существует явное преобразование (вам не хватает приведения?).
Обратите внимание, что я новичок в C # и понимаю, что это проблема преобразования типов и что строка с ошибкой предполагает, что модель Author содержит ICollection <>.
Я ищу код, необходимый в строке vm.books, который не выполняет преобразование типов и работает с ICollection.