Usuário com melhor resposta
Como exibir um item em @html.DropDownList

Pergunta
-
Tenho a seguinte estrutura:
public class Colaborador
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int IdColaborador { get; set; }
[ForeignKey("celular")]
public int IdCelula { get; set; }
public virtual Celula celular { get; set; }
[ForeignKey("empresa")]
public int IdEmpresa { get; set; }
public virtual Empresa empresa { get; set; }}
Como podem ver a estrutura acima possui duas foreing key, isso é Entity Framework code first, quando eu crio uma view tipada, ele cria um campo para digitar o código. Mas no caso eu preciso é de uma @html.dropdownlist. O meu problema é como eu vinculo o item selecionado no dropdown a o model da view?
Respostas
-
Boa tarde.
No MVC eu uso desta forma:
ViewBag.nome_qualquer= new SelectList(sua_lista.ToList(), "Value", "Text");
Isso preenche um dropdow com os itens da sua lista.
Desta forma:
ViewBag.nome_qualquer= new SelectList(sua_lista.ToList(), "Value", "Text", quem_é_o_item'SelectdValue');
No ultimo exemplo o dropdow é carregado já passando o valor que será exibido, que é valor que você gravou no banco de dados(por exemplo)
Consultoria .NET
ANALISTA DESENVOLVEDOR
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
Blog .Net Descomplicado- Sugerido como Resposta Leandro de Agostini terça-feira, 12 de agosto de 2014 22:36
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 10:53
-
Achei a resposta pessoal:
Utilizo essa consulta linq para retornar um SelectListItem:
IEnumerable<SelectListItem> ListProjeto = (from item in objDataContext.Projeto.AsEnumerable() select new SelectListItem() { Text = item.Nome, Value = item.IdProjeto.ToString() });
E na view utilizo isso para exibir a combo:
<div class="editor-label"> @Html.Label("Projeto:") </div> <div class="editor-field"> @Html.DropDownListFor(model => model.IdProjeto, ListProjeto, "Selecione um projeto") </div>
Dessa forma eu vinculo a lista ao model, e assim insiro a foreignkey.
- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 5 de março de 2018 09:31
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 10:52
Todas as Respostas
-
Boa tarde.
No MVC eu uso desta forma:
ViewBag.nome_qualquer= new SelectList(sua_lista.ToList(), "Value", "Text");
Isso preenche um dropdow com os itens da sua lista.
Desta forma:
ViewBag.nome_qualquer= new SelectList(sua_lista.ToList(), "Value", "Text", quem_é_o_item'SelectdValue');
No ultimo exemplo o dropdow é carregado já passando o valor que será exibido, que é valor que você gravou no banco de dados(por exemplo)
Consultoria .NET
ANALISTA DESENVOLVEDOR
Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
Blog .Net Descomplicado- Sugerido como Resposta Leandro de Agostini terça-feira, 12 de agosto de 2014 22:36
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 10:53
-
Mas o problema que o model de colaborador tem o IDCELULA por exemplo, quando crio a view ele cria o campo que código, mas o usuario não sabe o codigo. Ele sabe a descrição. Por isso vou utilizar o dropdown.
O problema não é a exibição, porque eu uso o dropdown e exibo corretamente, o problema é como eu vou vincular o item selecionado no dropdown ao model tipado da view. já que vão estar em contexto direferente.
Esse é o código é gerado pela View.
<div class="editor-label">
@Html.Label("Célula:")
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.IdCelula)
@Html.ValidationMessageFor(model => model.Nome)
</div>Posso implementar o dropdown, mas vincularei ao model acima. Esse aqui: model => model.IdCelula
- Editado PS César quarta-feira, 13 de agosto de 2014 00:32
-
Achei a resposta pessoal:
Utilizo essa consulta linq para retornar um SelectListItem:
IEnumerable<SelectListItem> ListProjeto = (from item in objDataContext.Projeto.AsEnumerable() select new SelectListItem() { Text = item.Nome, Value = item.IdProjeto.ToString() });
E na view utilizo isso para exibir a combo:
<div class="editor-label"> @Html.Label("Projeto:") </div> <div class="editor-field"> @Html.DropDownListFor(model => model.IdProjeto, ListProjeto, "Selecione um projeto") </div>
Dessa forma eu vinculo a lista ao model, e assim insiro a foreignkey.
- Sugerido como Resposta Lucio Rogerio SPBanned segunda-feira, 5 de março de 2018 09:31
- Marcado como Resposta welington jrModerator segunda-feira, 5 de março de 2018 10:52
-