L'utilizzo dei campi di input di DropDown è molto comune quando si desidera visualizzare una descrizione mentre si salva un ID nel database. Se considero il mio modello Person, ho PersonViewModel che ha una SelectList usata per visualizzare un elenco di possibili descrizioni dei lavori
public SelectList SelectJobDescription
{
get
{
MyDbContext _context = new MyDbContext();
var result = new SelectList(_context.Keywords
.Where(k => k.Name == ".JobDescription")
.OrderBy(r => r.Valuename), "Valuecode", "Valuename");
_context.Dispose();
return result;
}
}
e io uso questa SelectList nelle mie viste create / edit come questa:
<div class="form-group row">
<label asp-for="JobDescription" class="col-sm-4 col-form-label"></label>
<div class="col-sm-8">
<select asp-for="JobDescription" asp-items="@Model.SelectJobDescription" class="form-control">
<option>Select a Job Description</option>
</select>
</div>
È corretto usare _context in questo modo nel ViewModel o c'è un altro modo per fare la stessa cosa meglio (forse DI?)
Impostare la proprietà dopo aver instatiato il modello di vista (o durante l'inizializzazione), ad esempio:
var vm = new YourViewModel()
{
SelectJobDescription = new SelectList( _context... ),
};
return View( vm );