Ich verwende ASP.NET Core 1.0 und EF Core 1.0 und habe die folgende Code-First-Klasse in meiner SQL-Datenbank.Wie Sie einen TagHelper Select in Razor mithilfe von Daten aus einer SQL-Datenbanktabelle auffüllen
namespace GigHub.Models
{
public class Genre
{
public byte Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
}
}
Ich habe auch die folgende Ansichtsmodell der Klasse I in einem Razor Ansicht Formular:
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);
}
}
}
Ich habe meine Razor Ansicht einzurichten:
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; }
}
}
ich diesen Controller auch habe Verwenden Sie das ViewModel, aber ich bin mir nicht sicher, wie der unten abgebildete Tagshelf-Code für den Zugriff auf die Genre-Eigenschaft eingerichtet werden sollte.
<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>
Ich habe im Grunde Schwierigkeiten grokking, wie meine Liste von Genres aus meiner Datenbank in das Ansichtsmodell Eigenschaft in einer Form zu erhalten, dass die Select taghelper asp-item = verbrauchen kann. Die vielen & Fehlerverdrehungen, die ich durchgemacht habe, führen im Allgemeinen zu Umwandlungsproblemen, die von generischen Liste <> Typ zu MVC gehen SelectListItem Typ. Ich vermute, dass meine ViewModel-Genre-Klasse angepasst werden muss, aber meine bisherigen Recherchen haben nur zu Artikeln geführt, die frühere Versionen von ASP.NET und Entity Framework abdecken, und ich bemühe mich, sie dem ASP.NET-Core 1.0 RC2 und EF Core 1.0 zuzuordnen.
'' –
Gibt es keine Möglichkeit ViewBag zu vermeiden und die Liste des Ansichtsmodell in Form einer Liste für die taghelper zu erhalten die Zeilen von asp-items = "Model.MyGenreListHere"? Ist das, wo ich falsch liege? –
Verwenden Sie einfach ein Feld in Ihrem ViewModel. Ich werde ein Beispiel aus der ASP.NET-Dokumentation veröffentlichen. –