I need to put a dropdownlist under the following conditions: It will display the City name (City Table), but it will only record the Employee Code. Using this approach, I can mount the DropDownList: Model
public class Cidade
{
[Key]
public int id { get; set; }
[Required(ErrorMessage = "O nome da cidade é obrigatório", AllowEmptyStrings = false)]
[Display(Name="Nome")]
public String nome { get; set; }
public List<Cidade> ListaCidades()
{
return new List<Cidade>
{
new Cidade { id = 1, nome = "SÃO PAULO"}
};
}
}
See that my model is done manually. I could not bring the direct data from the table. In the controller I did so (I was using it in Action Wrong):
public async Task<ActionResult> Index()
{
GetFuncionariosAsync funcionarios = new GetFuncionariosAsync();
//popular a dropdown de cidades na view funcionarios
GetCidadesAsync cidade = new GetCidadesAsync();
var _cidade = await cidade.GetCidades();
ViewBag.ViewCidade = new SelectList(_cidade, "id", "nome");
var model = await funcionarios.GetFuncionarios();
return View(model);
}
// GET: GetFuncionarios/Create
public ActionResult Create(Cidade cidade)
{
var cidadeId = cidade.id;
ViewBag.ViewCidade = new SelectList
(
new Cidade().ListaCidades(),
"id",
"nome",
cidadeId
);
return View();
}
Of course my cshtml (just the dropdownlist) looks like this:
<div class="form-group">
@Html.LabelFor(model => model.cidade, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("id", (SelectList)ViewBag.ViewCidade, "- Selecione -", new { @class = "form-control" })
</div>
</div>
See the screenshot below of how the dropdown is, now I just need to know how to load the list from the database and if I really need to create the CitiesCategory () method in the model?
See that in the dropdown, I show the City of São Paulo. But this was released manually, now how do I clear the BD fields? Do I need the listacidades () method? I find it unnecessary.
The way it is, if I try to do it this way,
public async Task<ActionResult> Create()
{
//var cidadeId = cidade.id;
GetCidadesAsync cidade = new GetCidadesAsync();
var _cidade = await cidade.GetCidades();
ViewBag.ViewCidade = _cidade.Select(s => new SelectListItem { Value = s.id.ToString(), Text = s.nome });
return View();
}
I get the error below:
System.InvalidCastException: 'Unable to cast object of type 'WhereSelectListIterator'2 [TrainingCrud.Models.City, System.Web.Mvc.SelectListItem]' to type 'System.Web.Mvc.SelectList'. '
Any help is welcome.