none
pasar datatable a una vista RRS feed

  • Pregunta

  • Hola Comunidad, tengo el siguiente problema:

    Tengo un formulario de inicio de sesion en cual se valida el ingreso de los usuarios, cuando la validación se cumple realizo una consulta de los permisos del usuario y los traigo en un datatable, pero lo que no he podido realizar es pasar ese datatable que tengo en el controlador del login a la vista que sigue después de validar el inicio de sesión. Alguien me podria colaborar por favor.


    Sergio Fernandez Cruz Life Run's of Code

    miércoles, 14 de diciembre de 2016 16:39

Todas las respuestas

  • Hola Sergio Fernandez Cruz,

    Recomendaría no usar un DataTable como model, sino usar una Clase 'x' recorrer el DataTable y enviar un List<MiClase> como modelo.

    Algo como :

    public class MiClase
    {
        public string propiedad1 { get; set; }
        public string propiedad2 { get; set; }
    }

    y cuando ya tengas el DataTable con los datos, tendrías que recorrer y crear una lista.

    List<MiClase> datos = dt.Rows.OfType<DataRow>().
                                    Select(x => new MiClase()
                                    {
                                        propiedad1 = x["campo1"].ToString(),
                                        propiedad2 = x["campo2"].ToString()
                                    }).ToList();
    return View(datos);

    Dónde 'dt' es el DataTable.

    Y en la vista :

    @model List<miubicacion.MiClase>
    
    
    @foreach (var item in Model)
    {
        /*Hacer algo ...*/
        <a>@item.propiedad1</a><br />
    }

    Aunque si persistes en usar un DataTable para el modelo, solo tendrías que enviarla a la vista :

    return View(dt);

    Y en la vista agregar las referencias para poder usarla :

    @using System.Data
    
    @model DataTable
    
    @{
        /*...*/
    }
    
    <h2>Algún title</h2>
    
    @foreach (DataRow row in Model.Rows)
    {
        /*Hacer algo ...*/
        <a>@row["campo1"].ToString()</a><br />
        <a>@row["campo2"].ToString()</a><br />
    }

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 14 de diciembre de 2016 17:10
  • hola

    >>los traigo en un datatable, pero lo que no he podido realizar es pasar ese datatable que tengo en el controlador del login a la vista

    pero tienes que convertir ese datatable a una clase que definas en tu Model, o sea en la carpeta model de mvc debes definir una clase con propiedades que representen los datos que enviaras a la view

    en el controller deberas iterar las rows del datatable y convertir este en la clase que asignaras en la view

    un datatable no deberias usarlos en la view

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 14 de diciembre de 2016 17:49
  • Crack
    viernes, 10 de mayo de 2019 16:07