Probably you're not filling it after validation failure, see this example
There is a create Action for Vehicle first we need to send Drop down list in Get and then need to re send if ModelState is not valid
public class VehicleViewModel
{
public string VehicleName {get; set;}
public string VehicleMake {get; set;}
public int VehicleTypeId {get; set;}
public List<SelectListItem> VehicleTypes {get; set;}
}
[HttpGet]
public ActionResult Create()
{
var viewModel = new VehicleViewModel();
viewModel.VehicleTypes = GetVehicleTypesSelectListItems();
retrun View(viewModel);
}
[HttpPost]
public ActionResult Create(VehicleViewModel model)
{
if(ModelState.IsValid)
{
}
model.Vehicles = GetVehicleTypesSelectListItems();
return View(model);
}
private List<SelectListItem> GetVehicleSelectListItems()
{
var selectList = new List<SelectListItem>();
var vechiles = GetAllVehicleTypes();
foreach (var element in vechiles)
{
selectList.Add(new SelectListItem
{
Value = element.Id,
Text = element.Type
});
}
return selectList;
}
Your View should be like
@Html.DropDownListFor(model => model.VehicleTypeId, Model.VehicleTypes, " --- Select --- ", new { @class = "form-control" })