Populating Dropdown in ASP.net Core
Looking at the documentation it appears that asp.net core may be moving away from HTML helpers and towards the use of tag helpers. The following link should help
https://docs.asp.net/en/latest/mvc/views/working-with-forms.html#the-select-tag-helper
specifically
@model CountryViewModel<form asp-controller="Home" asp-action="Index" method="post"><select asp-for="Country" asp-items="Model.Countries"></select> <br /><button type="submit">Register</button></form>
Note the use of "asp-for" which references the Model attribute to bind and the use of "asp-items" which references the model attribute source for the List of Select List items and how it is applied to the select tag
The sample model used in the documentation is referenced below for completeness
namespace FormsTagHelper.ViewModels{public class CountryViewModel{ public string Country { get; set; } public List<SelectListItem> Countries { get; } = new List<SelectListItem> { new SelectListItem { Value = "MX", Text = "Mexico" }, new SelectListItem { Value = "CA", Text = "Canada" }, new SelectListItem { Value = "US", Text = "USA" }, };}}
@model EmployeeViewModel<form asp-controller="Home" asp-action="SaveEmployee"> <label asp-for="DesirablePosition">Desirable Position</label> <select asp-for="DesirablePosition" asp-items="Model.DesirablePositionItems"></select></form>
public class EmployeeViewModel {
public string DesirablePosition { get; set; }public List<SelectListItem> DesirablePositionItems { get; } = new List<SelectListItem> { new SelectListItem { Value = "j", Text = "Junior" }, new SelectListItem { Value = "m", Text = "Middle" }, new SelectListItem { Value = "s", Text = "Senior" }, };
}
public class HomeController : Controller {
public IActionResult SaveEmployee(){ return View(new EmployeeViewModel());}
}
Driver Controller
public class DriverController : Controller{ private readonly ApplicationDBContext _context; public DriverController(ApplicationDBContext context) { _context = context; } // GET: Driver/Create public IActionResult Create() { ViewData["VehicleId"] = new SelectList(_context.Vehicle, "Id", "PlateNo"); return View(); }}
Driver View
@model DriverViewModel<form asp-action="Create"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="VehicleId" class="control-label"></label> <select asp-for="VehicleId" class ="form-control" asp-items="ViewBag.VehicleId"></select> </div></form>