Basicamente, estou tentando inserir um item no início de uma SelectList com o valor padrão de 0 e o valor de texto de "- Selecione um -"
Algo como
SelectList list = new SelectList(repository.func.ToList());
ListItem li = new ListItem(value, value);
list.items.add(li);
Isso pode ser feito?
asp.net-mvc
selectlist
GEOCHET
fonte
fonte
SelectList
realmente parece ser apenas um auxiliar para vincular dados diretamente a itens. Se você adicionar itens manualmente, useList<SelectListItem>
.Respostas:
Realmente não há necessidade de fazer isso a menos que você insista no valor de 0. A extensão HtmlHelper DropDownList permite que você defina um rótulo de opção que aparece como o valor inicial no select com um valor nulo. Basta usar uma das assinaturas DropDownList que possui o rótulo de opção.
fonte
@Html.DropDownListFor( m => m.MenuSelection, (IEnumerable<SelectListItem>)ViewBag.Menu, "Select One", null )
por exemplo, incluindo o nulohtmlAttributes
para evitar confusão com a assinatura que leva uma expressão, a enumeração de menu e um objeto (htmlAttributes).dataValueField
e odataTestField
que fez isso não funcionar ao adicionar um valor de optionLabel. Provavelmente poderia ter funcionado com um pouco mais de esforço, mas acabei de usar uma das soluções alternativas. Mesmo assim, obrigado!Eu fiz isso funcionar preenchendo um SelectListItem, convertendo em uma lista e adicionando um valor no índice 0.
fonte
Isso é possível.
fonte
Gostei da resposta de @AshOoO, mas como @Rajan Rawal, eu precisava preservar o estado do item selecionado, se houver. Então eu adicionei minha customização ao seu método
AddFirstItem()
fonte
Isso deve fazer o que você precisa, basta enviar sua lista de seleção e ela retornará uma lista de seleção com um item no índice 0
Você pode custear o texto, valor ou mesmo o índice do item que você precisa inserir
fonte
Aqui ajudante html para você
fonte
O método .ToList (). Insert (..) coloca um elemento em sua lista. Qualquer posição pode ser especificada. Depois de ToList, basta adicionar .Insert (0, "- - Primeiro Item - -")
Seu código
Novo Código
fonte
Pode não parecer muito elegante, mas geralmente faço algo assim:
fonte
Ok, eu gosto de código limpo, então fiz disso um método de extensão
Uso (por exemplo):
fonte
Como esta opção pode necessitar de muitas maneiras diferentes, cheguei à conclusão de desenvolver um objeto para que possa ser utilizado em diferentes cenários e em projetos futuros
primeiro adicione esta classe ao seu projeto
Agora, em Controller Action, você pode fazer assim
E, finalmente, em View, você codificará assim.
fonte
Uma solução alternativa é usar a resposta de @tvanfosson (a resposta selecionada) e usar JQuery (ou Javascript) para definir o valor da opção como 0:
Espero que isto ajude.
fonte
Tente algo como o seguinte código:
fonte
Eu não sei se alguém tiver uma opção melhor ...
fonte