none
Select dependientes en MVC C# (razor?) RRS feed

  • Pregunta

  • Estimados, he revisado muchos artículos sobre Select en cascada y no pillo una solución. Tengo lo siguiente:
    En una vista, junto a otros datos, cargo un <select name="Id_TipoDocumento">con los datos de una tabla, en una vista parcial.
    Además cargo otro <select name="Id_SubTipos"> con los datos de otra tabla, como otra vista parcial y hasta acá todo bien.

    Tabla TipoDocumentos: Id_TipoDocumento, NombreTipoDocumento
    Tabla SubTipos: Id_SubTipo, NombreSubTipo, Id_TipoDocumento (con la que se relacionaría).

    Necesito que el Select Id_SubTipos filtre los resultados a mostrar según el .value() así como un select * from SubTipos where Id_TipoDocumento=tipo
    He visto soluciones con Ajax, jQuery y Json, pero dejan el código de la consulta expuesta al "Ver Código fuente de la página" y creo que con Razor eso no sucede, o al menos con c# usas  @{ codigo...}

    ¿Hay alguna forma de hacer este filtro sin que sea visible la consulta?

    Así cargo los Select:

    @model IEnumerable<ENTIDAD.TIPODOCUMENTOS> <select class="form-control" id="Id_TipoDocumento" name="Id_TipoDocumento"> @foreach (var item in Model) { <option value="@item.Id_TipoDocumento">@item.NombreTipoDocumento</option> } </select>

    @* Vista parcial de un Select *@

    Así llamo los Select como Vista Parcial

    <div class="col-xs-4"> @* Vista Parcial: Dropdown Tipo de documento *@ @Html.Action("TiposDocus", "SubTipoDoc") </div>





    • Editado Jano Bass viernes, 8 de noviembre de 2019 14:11
    viernes, 8 de noviembre de 2019 13:56

Todas las respuestas

  • Solucionado, casi:

    en la PartialView estaba recibiendo un modelo IEnumerable<ENTIDAD.TIPODOCUMENTOS> y debía ser IEnumerable<Models.DocAux> que es la clase donde tengo las variables para las consultas sobre varias tablas.

    Al llamar a la vista lo dejé así: @Html.Action("ListaSubTipos", "Documentos", new { id = 1 }), así paso una id=1 para hacer el filtro, aunque aún debo solucionar cómo pasar una variable y no un id=1 fijo.

    viernes, 8 de noviembre de 2019 16:54
  • hola

    >>pero dejan el código de la consulta expuesta al "Ver Código fuente de la página"

    eso no es asi

    la consulta esta en tu servidor, en un action del controller, lo que ajax hace es un request a ese action recibiendo un json con los datos

    pero no deja ninguna consulta visible

    >>¿Hay alguna forma de hacer este filtro sin que sea visible la consulta?

    la verdad no se que ejemplos estas viendo pero no es lo que explicas

    Cascading (Dependent) Country State City DropDownLists using jQuery AJAX in ASP.Net MVC

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 8 de noviembre de 2019 18:23
  • Gracias por tu respuesta Leandro.

    Veo que estoy tratando de resolver algo por otro lado que no debe ser.

    He estado tratando de resolver en base al ejemplo que indicas, pero en mi modelo de datos no reconoce el <SelectListItem>

    //DocAux.cs

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.Data.SqlClient; namespace DATOS { public class DocAux { public int Id_Documento { get; set; } public int Id_TipoDocumento { get; set; } public int? ID_SubTipo { get; set; } public string NombreTipoDoc { get; set; } public string NombreSubTipo { get; set; } public int Id_Usuario { get; set; } public string NombreUsuario { get; set; } public int Id_Area { get; set; } public string Division { get; set; } public string Dependencia { get; set; } } public class CascadingModel { public CascadingModel() { this.Countries = new List<SelectListItem>(); this.States = new List<SelectListItem>(); this.Cities = new List<SelectListItem>(); } public List<SelectListItem> Countries { get; set; } public List<SelectListItem> States { get; set; } public List<SelectListItem> Cities { get; set; } public int CountryId { get; set; } public int StateId { get; set; } public int CityId { get; set; } } }

    Tendrá que ver que mi proyecto es en 4 capas (Solución Web con Vistas y controladores, Datos, Entidad, Negocio)?

    Todos los otros datos, Action, Vistas y demáses, son accesibles y no he tenido problemas para trabajar con ellos en las diferentes vistas, pero esto ya me tiene bastante mareado.

    Estaré declarando las listas donde no debo?
    • Editado Jano Bass lunes, 11 de noviembre de 2019 14:50
    lunes, 11 de noviembre de 2019 14:47