none
View com dados de filtro e o resultado juntas RRS feed

  • Pergunta

  • Bom dia.

    Fiz uma view usando o recurso de Areas e tudo e funciona muito bem. /sistema/colaborador/listar.  Funfa que é uma beleza, vai na base e monta o grid.

    Só que agora eu fui colocar uma área para filtros.  Fiz com accordion do jquery onde pode filtarr Nome e\ou campo Ativo. Daí na minha classe Model (ColaboradorListarModel) eu não sei como por atributos e uma lista para renderizar.

    Fiz assim:

        public class ColaboradorListarFiltrosView
        {
            [Display(Name=@"Nome \ Razão Social")]
            public string Nome { get; set; }
    
            public bool Ativo { get; set; }
    
            public virtual IEnumerable<ColaboradorListarItensView> Itens { get; set; }
        }
    
        public class ColaboradorListarItensView
        {
            public int Codigo { get; set; }
                    
            [Display(Name = @"Nome \ Razão Social")]
            public string Nome { get; set; }
    
            [Display(Name = @"Física\Jurídica")]
            public string FisicaJuridica { get; set; }
    
            [Display(Name = @"CPF\CNPJ")]
            public string CPFCNPJ { get; set; }
    
            [Display(Name = "E-Mail")]
            public string EMail { get; set; }
    
            public string Telefone { get; set; }
            public bool Ativo { get; set; }
        }

    Vejam que a primeria classe tem uma List da segunda, que são os colaboradores retornados.

    Na view coloquei:

    @model GestorWebNet.Models.View.Sistema.Colaborador.ColaboradorListarFiltrosView

    Só que como faço no FOR?

    @foreach (var item in Model.Itens)
    

    Na hora de executar dá o erro:

    Compilation Error
    
    Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 
    
    Source Error:
    
    
    Line 32:         </th>
    Line 33:         <th>
    Line 34:             @Html.DisplayNameFor(model => model.Itens.Nome)
    Line 35:         </th>        
    Line 36:         <th>

    Não consigo fazer uma vie wde buscas mas com dados da busca e o resultado em si.

    Obrigado!

    segunda-feira, 4 de março de 2013 15:03

Todas as Respostas

  • A propriedade 'Nome' não existe em 'Itens' mas sim em Itens[index].

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    segunda-feira, 4 de março de 2013 15:19
  • Não entendo muito bem.

    Fiz umas mudanças e agora o erro é:

    The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[GestorWebNet.Models.View.Sistema.Colaborador.ColaboradorListarItensView]', but this dictionary requires a model item of type 'GestorWebNet.Models.View.Sistema.Colaborador.ColaboradorListarFiltrosView'.

    A página é tipada para ColaboradorListarFiltrosView porém ela tem uma lista de itens e no foreach tá dando zica.  Será que tenho que usar um laço For puro?
    segunda-feira, 4 de março de 2013 15:27
  • Esquece tudo.. na controladora eu estava retornando um objeto errado. Desculpe.  Tudo certo.
    segunda-feira, 4 de março de 2013 15:29
  • Você está tentando pegar uma propriedade de List<>, mas esta propriedade não pertence a List e sim aos objetos internos da List, ou seja, você não pode fazer isso:

    model.Lista.Item

    você precisa acessar um index(acessando o objeto interno da lista):

    model.Lista[1].Item


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    segunda-feira, 4 de março de 2013 15:30