Como eu faço um foreach em cima de uma ViewData na View.

22/09/2014

0

Essa é a minha controller:
public ActionResult Acao()
        {
            RupturaEntities db = new RupturaEntities();

            var _listaUnidade  = Enumerable.Empty<object>();
            var _listaFamilia  = Enumerable.Empty<object>();
            var _listaProduto  = Enumerable.Empty<object>();
            var _listaCnpjDesc = Enumerable.Empty<object>();

            var monta_arvore = db.Ruptura
                               .Where(m => m.IDMotivo != 7)

                               .Select(rup => new MontaArvoreAcao
                               {
                                   IDRuptura = rup.IDRuptura,
                                   DataRuptura = rup.DataRuptura,
                                   IDMotivo = rup.IDMotivo,
                                   Motivo = rup.Motivo.Motivo1,
                                   IDOrigem = rup.IDOrigem,
                                   CodigoPDV = rup.CodigoPDV,
                                   UF = rup.PDV.UF,
                                   Cidade = rup.PDV.Cidade,
                                   CnpjDescricao = rup.PDV.Cnpj + " - " + rup.PDV.Descricao,
                                   Codigo_Apresentacao = rup.Codigo_Apresentacao,
                                   Unidade_Negocio = rup.Apresentacao.Unidade_Negocio,
                                   Codigo_Unidade_Negocio = rup.Apresentacao.Codigo_Unidade_Negocio,
                                   Franquia = rup.Apresentacao.Franquia,
                                   Familia = rup.Apresentacao.Familia,
                                   Descricao = rup.Apresentacao.Descricao

                               }).ToList().OrderBy(r => r.IDMotivo);

            foreach (var _idmotivo in monta_arvore)
            {
                _listaUnidade = db.Apresentacao
                                .Where(un => un.Codigo_Unidade_Negocio == _idmotivo.Codigo_Unidade_Negocio)
                                .Select(u => new MontaArvoreAcao
                                {
                                    Unidade_Negocio = u.Unidade_Negocio,
                                    Codigo_Familia = u.Codigo_Familia
                                }).ToList().OrderBy(o => o.Unidade_Negocio);
            }

            ViewData["ListaUn"] = _listaUnidade.ToList();

            foreach(var _idUn in monta_arvore)
            {
                _listaFamilia = db.Apresentacao
                                .Where(f => f.Codigo_Familia == _idUn.Codigo_Familia)
                                .Select(f => new MontaArvoreAcao
                                { 
                                    Familia = f.Familia,
                                    Codigo_Familia = f.Codigo_Familia
                                }).ToList();
            }

            ViewData["ListaFam"] = _listaFamilia;

            foreach(var _prod in monta_arvore)
            {
                _listaProduto = db.Apresentacao
                                .Where(p => p.Codigo_Apresentacao == _prod.Codigo_Apresentacao)
                                .Select(prod => new MontaArvoreAcao
                                {
                                    Descricao = _prod.Descricao,
                                    Codigo_Apresentacao = _prod.Codigo_Apresentacao
                                }).ToList();
            }

            ViewData["ListaProd"] = _listaProduto;

            foreach(var cnpj in monta_arvore)
            {
                _listaCnpjDesc = db.PDV
                                 .Where(c => c.CodigoPDV == cnpj.CodigoPDV)
                                 .Select(x => new MontaArvoreAcao
                                 {
                                     CnpjDescricao = x.Cnpj + " - " + x.Descricao
                                 }).ToList();
            }

            return View(monta_arvore.ToList());
        }

        [HttpPost]
        public JsonResult CarregaCidades(string _uf)
        {
            RupturaEntities db = new RupturaEntities();

            var resultado = (from _pdv in db.PDV
                             .Where(c => c.UF == _uf)
                             select new { _pdv.Cidade }).ToList().Distinct().OrderBy(o => o.Cidade);

            return Json(new { resultado }, JsonRequestBehavior.AllowGet);
        }



Essa é minha View onde quero o foreach
<div id='jqxWidget'>
    <div style='float: left; width:auto;'>
        <div id='jqxTree' style='visibility: hidden; float: left; margin-left: 20px;'>

            @{
                var _motivo = "";
                var _un = ViewData["ListaUn"];
                var _familia = "";
                var _desc = "";
                var _apr = "";

                int _idmotivo = 0;
                <ul>
                    @foreach (var item in Model)
                    {
                        if (_motivo != @item.Motivo)
                        {
                            _idmotivo = @item.IDMotivo;
                            <li item-checked='false' item-expanded='false'>
                                @item.Motivo
                                
                                <ul>
                                    @foreach (var un in (System.Collections.Generic.List<Ruptura.Models.MontaArvoreAcao>ViewData["ListaUn"]))
                                    {
                                        <li item-checked='false' item-expanded='false'>
                                            @un.Unidade_Negocio

                                        </li>
                                    }
                                </ul>

                              </li>
                                    
                            }
                            _motivo = @item.Motivo;
                        }
                </ul>
              }

</div>

        <div style='margin-left: 60px; float: left;'>
            <div style='margin-top: 10px;'>
                <input id='jqxCheckBox' type="hidden">
            </div>
        </div>

    </div>
</div>


O que passa é que nessa linha dá erro no tipo:
@foreach (var un in (System.Collections.Generic.List<Ruptura.Models.MontaArvoreAcao>ViewData["ListaUn"]))


Afinal, qual o tipo que eu carrego no List?
Pjava

Pjava

Responder

Posts

22/09/2014

Pjava

Eiso o erro:

Mensagem de Erro do Compilador: CS0305: O uso de tipo 'System.Collections.Generic.List<T>' genérico requer argumentos de tipo 1
Responder

22/09/2014

Pjava

Na busca por fazer funcionar, fiz essa alteração e não deu mais nenhum erro, porém não trago mais nada na minha página, nem o Motivo que estava sendo carregado diretamente, sem ViewData ou ViewBag. Antes funcionava. O meu BD está devidamente populado, não é falta de registro. É problema mesmo. No break com o Motivo tenho a informação, mas não tenho nada na página. Fiz assim: Um include na página e mudança no foreach.

meu include:

@model IEnumerable<Ruptura.Models.MontaArvoreAcao>


meu foreach:

@foreach (var un in (ViewData["ListaUn"] as IEnumerable<Ruptura.Models.MontaArvoreAcao>))
Responder

22/09/2014

Pjava

Falei do break, mas me confundi com outra situação. Não entra no foreach. Coloquei um break e vi que não entra, ele pula direto.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar