DropDownListFor não exibindo/persistindo nulo para a primeira escolha na lista
-
12-11-2019 - |
Pergunta
Eu tenho um aplicativo MVC via SharpArch.Na visão eu tenho:
Html.DropDownListFor(x => x.Location,
new SelectList(Model.PossibleLocations, "Id", "Address"),
"-- No Location --")
Eu tenho 2 problemas.
- O menu suspenso não é atualizado quando a visualização é vinculada ao modelo.
- Uma seleção é persistida corretamente, exceto quando tento o topo "sem localização".
Consegui cuidar do primeiro ponto alterando x.Location para x.Location.Id, mas tive outros problemas.
Posso encontrar muitos exemplos para DropDownList, mas nenhum em que seja mostrado salvar um nulo.
Qualquer ajuda é apreciada.
Obrigado
ATUALIZAR:
Acabei de atualizar o Resharper (uma pequena atualização) e estou sendo solicitado a preenchê-lo DropDownListFor.Por que isso faria diferença?Estava funcionando o suficiente para ligar e agora não funciona mais.
Solução
Você sempre pode inserir o "vazio" SelectListItem
dentro de voce PossibleLocations
coleta antes de passar para o View
e verifique o valor "vazio" (0 por exemplo) quando o formulário for postado
model.PossibleLocations.Insert(0,
new SelectListItem() { Text = "-- No Location --", Value = "0" };
Outras dicas
Tente "nivelar" sua classe de modelo para que LocationId seja o valor real ao qual você está vinculando (ou seja,adicione uma propriedade "LocationId" ao seu modelo e crie um DropDownList para x => x.LocationId
).