none
Como exibir um item em @html.DropDownList RRS feed

  • 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?

    terça-feira, 12 de agosto de 2014 17:29

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

    terça-feira, 12 de agosto de 2014 18:10
  • 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.

    sábado, 16 de agosto de 2014 17:43

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

    terça-feira, 12 de agosto de 2014 18:10
  • 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
    terça-feira, 12 de agosto de 2014 21:01
  • 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.

    sábado, 16 de agosto de 2014 17:43
  • Como que vc envia o ListProjeto para sua view ?

    Obrigado

    domingo, 4 de março de 2018 02:43