none
No hay ningún elemento ViewData de tipo 'IEnumerable<SelectListItem>' con la clave 'IdAmbiente'. ASP.NET MVC RRS feed

  • Pregunta

  • Muy buen dia, tengo este error pero solo al visualizar el proyecto publicado en IIS7, cuando le doy "ver en Explorador" en el visual studio me funciona correctamente.

    *En mi Clase Controller tengo esta accion que me llena los combos y me lista los documentos:

                    

    public ActionResult Index(int IdAmbiente = 0)
            {
                    ViewBag.IdAmbiente = new SelectList(bd.FE_Ambiente, "IdAmbiente", "Ambiente", "Ambiente");

                    var listado = ....ToList();

    Variables.Listados.LGestorHisto = listado ;

                    return View(listado);
            }

    *Luego tengo otra acción que me genera un reporte y cuando la llamo es que me genera ese error:

    public ActionResult Report(string id)
            {
                LocalReport lr = new LocalReport();
                string path = Path.Combine(Server.MapPath("~/Report"), "Historico.rdlc");
                if (System.IO.File.Exists(path))
                    lr.ReportPath = path;
                else
                    return View("Index");

                ReportDataSource rd = new ReportDataSource("DataSet1", Variables.Listados.LGestorHisto);
                lr.DataSources.Add(rd);

                string reportType = id;
                string mimeType;
                string encoding;
                string fileNameExtension;

                string deviceInfo =
                "<DeviceInfo>" +
                    "<OutputFormat>" + id + "</OutputFormat>" +
                    "<PageWidth>8.5in</PageWidth>" +
                    "<PageHeight>11in</PageHeight>" +
                    "<MarginTop>0.5in</MarginTop>" +
                    "<MarginLeft>0.5in</MarginLeft>" +
                    "<MarginRight>0.5in</MarginRight>" +
                    "<MarginBottom>0.5in</MarginBottom>" +
                "</DeviceInfo>";

                Warning[] warnings;
                string[] streams;
                byte[] renderedBytes;

                renderedBytes = lr.Render(
                    reportType,
                    deviceInfo,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings
                    );

                return File(renderedBytes, mimeType);
            }

    En la vista:

    @using (Html.BeginForm())

    {

     @Html.Label("IdAmbiente", "Ambiente", new { @class = "col-sm-1 control-label" })
      <div class="col-sm-2">
           @Html.DropDownList("IdAmbiente", (IEnumerable<SelectListItem>)ViewBag.IdAmbiente, "--Seleccione--", new { @class = "form-control" })
       </div>

    <div><a href="@Url.Action("Report", new { id="PDF" })" target="_blank">PDF</a></div>

    }

    Ayuda por favor!!

    sábado, 16 de abril de 2016 17:24

Todas las respuestas

  • Me parece un poco extraño que esto le compile.  Si mal no recuerdo, puesto que ViewBag es dinámico, uno no puede hacer un cast inline en razor.  Me parece que el compilador se queja de esto.  Entonces yo le recomendaría tratar una variable.

    @using (Html.BeginForm())
    {
     IEnumerable<SelectListItem> lista = (IEnumerable<SelectListItem>)ViewBag.IdAmbiente;
     @Html.Label("IdAmbiente", "Ambiente", new { @class = "col-sm-1 control-label" })
      <div class="col-sm-2">
           @Html.DropDownList("IdAmbiente", lista, "--Seleccione--", new { @class = "form-control" })
       </div>
    
    <div><a href="@Url.Action("Report", new { id="PDF" })" target="_blank">PDF</a></div>
    
    }


    Jose R. MCP
    Code Samples

    sábado, 16 de abril de 2016 22:12
  • Hola,

    Si estas creando la lista así :

    ViewBag.IdAmbiente = new SelectList(bd.FE_Ambiente, "IdAmbiente", "Ambiente", "Ambiente");

    No necesitas crear un IEnumerable de tipo SelectListItem.

      @Html.DropDownList("IdAmbiente", (SelectList) ViewBag.IdAmbiente, "--Seleccione--", new { @class = "form-control" })

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 16 de abril de 2016 22:18