none
Como Carregar um select com um List<string>

    Pergunta

  • Boa tarde

    Estou fazendo um botão excluir e não consigo tipar a minha view para fazer o foreach. esse aqui é o meu controller:

    public ActionResult Index(Usuarios usuarios)
            {
                var negocio = new Negocios();
                usuarios = (Usuarios)Session["Usuarios"];
                List<string> recebeusuarios = negocio.SelectTodosUsuarios(usuarios);
            
                            
               return View(recebeusuarios);

    Estou passando recebeusuarios para minha view, efetuei o debug e realmente o meu list está carregado.

    Essa é a minha view

    @model System.Collections.Generic.List<string>

    @{
        ViewBag.Title = "Index";
    }

    <h2>Excluir Conta Usuário</h2>
    Selecione o usuário que você deseja excluir:
    <select>
        <option value="Nome:">
           @foreach (var item in Model)
           {
               @item.
               
           }
        </option>
    </select>

    para nao dar erro tipei a minha view em negrito acima mas ela não traz o List como posso fazer para carregar o meu foreach ?

    quarta-feira, 28 de agosto de 2013 19:46

Respostas

Todas as Respostas

  • Aparentemente ta certinho na View é isso mesmo, quando você digita Model você já está manipulando diretamente os dados que chegaram via Model Binder independente se é um Tipo Simples ou Complexo.

    No Foreach deixa somente @item


    Leonardo Lourenço Silva



    quarta-feira, 28 de agosto de 2013 19:50
  • <select>

        <option value="Nome">
            Nome:
        </option>

           @foreach (var item in Model)
           {
                  <option value="@item">
            @item
              </option>
           }   

    </select>

              
    • Editado Cesar Mendes quarta-feira, 28 de agosto de 2013 20:05 Estava errado
    quarta-feira, 28 de agosto de 2013 20:05
  • Então substitui e não da certo é como se ele estivesse manipulando um objeto do banco por exemplo estranho quando eu aperto Crtl espaço ele me da essas opções

    @item.Select

    @item.All

    @item.Aggregate

    @item.Contains

    quarta-feira, 28 de agosto de 2013 20:36
  • Achei a solução como era uma lista de string era oque era carregado na memória era um Vetor e não uma Matriz quando se carrega um tipo Objeto.

    só tinha que mostrar string.

    Obrigado.

      @foreach (var item in Model)
           {   
                  <option value="@item">
            @item.ToString()
              </option>
           } 

    Mas agora é seguinte, não tenho como capturar o select que o usuario enviou ?

    sexta-feira, 30 de agosto de 2013 20:55
  • O que gerou o output Html?

    Fúlvio Cezar Canducci Dias

    sexta-feira, 30 de agosto de 2013 21:27
  • já que você está devolvendo o model como List<string>, vc pode fazer algo do tipo:

    @model List<string>
    
    @Html.DropDownList(
        "ModelDropdownList", 
        new SelectList(
            Model.Select(x => new { Value = x, Text = x }),
            "Value",
            "Text"
        )
    )


    domingo, 1 de setembro de 2013 00:39
  • Pesquisei na internet e me parece que esse request.form consegue recuperar o que o usuario selecionou

    estou usando esse código, pelo que entendi eu tenho que passar como parametro o id do meu select

    <select id="Excluir"  runat ="server">
         
           @foreach (var item in Model)
           {   
                  <option value="@item.ToString()" >
            @item.ToString()
              </option>
           }   

    </select>

    No meu controller estou usando isso

                    string capturaValorSelect = Request.Form["Excluir"].ToString()

    terça-feira, 3 de setembro de 2013 17:54
  • Você pode pegar o valor selecionado(no dropdown) por parâmetro na sua action apenas colocar o name=excluir no select e na action você deve colocar uma string(int32 tambem) com o nome excluir ou usar sua model q tenha uma string(int 32) chamada excluir. ModelBinder popula para o você o valor. Eu faria o dropdownlist com html helper no lugar de fazer um foreach. 



    Exemplo 



    Public ActionResult myaction(string Excluir){

    }

    seu código

    <select id="Excluir"  name="Excluir">
         
           @foreach (var item in Model)
           {   
                  <option value="@item.ToString()" >
            @item.ToString()
              </option>
           }   

    </select> 
    • Editado D.Bacci quarta-feira, 4 de setembro de 2013 13:01
    quarta-feira, 4 de setembro de 2013 13:01
  • Obrigado vou alterar o código usando suas dicas. Vlww
    quarta-feira, 4 de setembro de 2013 18:06
  • Galeraa Obrigado pela ajuda alterei com o dropdownlist e utilizei o nome do dropdown

     Request.Form["Excluir"].ToString()

    funcionou :)

    quarta-feira, 4 de setembro de 2013 19:22