Я использую ASP.NET Core 1.0 и EF Core 1.0, и в моей базе данных SQL есть следующий класс code-first.
namespace GigHub.Models
{
public class Genre
{
public byte Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
}
}
У меня также есть следующий класс ViewModel, который я использую в форме представления Razor:
namespace GigHub.ViewModels
{
public class GigFormViewModel
{
public string Venue { get; set; }
public string Date { get; set; }
public string Time { get; set; }
public List<Genre> Genres { get; set; }
}
}
Еще у меня есть такой контроллер:
using GigHub.Data;
using GigHub.ViewModels;
using Microsoft.AspNetCore.Mvc;
namespace GigHub.Controllers
{
public class GigsController : Controller
{
private readonly ApplicationDbContext _context;
public GigsController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Create()
{
var vm = new GigFormViewModel();
// Need to get my Genre list from the DbSet<Genre> in my database context injected above
// into the GigFormViewModel for the Select taghelper to consume
return View(vm);
}
}
}
У меня есть представление Razor, настроенное на использование ViewModel, но я не уверен, как следует настроить приведенный ниже код Select taghelper для доступа к свойству Genre.
<div class="form-group">
<label asp-for="????" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="????" asp-items="????" class="form-control"></select>
<span asp-validation-for="????" class="text-danger" />
</div>
</div>
У меня в основном проблемы с поиском того, как получить мой список жанров из моей базы данных в свойстве ViewModel в форме, которую может использовать Select taghelper asp-items =. Многочисленные искажения методом проб и ошибок, через которые я прошел, обычно приводят к проблемам с преобразованием общего типа List ‹> в тип SelectListItem MVC. Я подозреваю, что мой класс ViewModel Genre нуждается в корректировке, но мои исследования до сих пор привели только к статьям, охватывающим предыдущие версии ASP.NET и Entity Framework, и мне трудно сопоставить их с ядром ASP.NET 1.0 RC2 и EF Core 1.0.