martes, 26 de junio de 2018

droplist  en cascada con Ajax y jsonresult


este es el view


@{
    ViewBag.Title = "Home Page";
}


<h2>regiones_listado</h2>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
    $(function () {
        $.ajax({
            type: "GET",
            url: "/servicios/servicio_geo/regiones_listado",
            datatype: "Json",
            success: function (data) {
                $.each(data, function (index, value) {
                    $('#Region').append('<option value="' + value.id_region + '">' + value.region +'</option>');
                });
            }
        });
   

        $('#Region').change(function () {
            $('#Comunas').empty();
            $.ajax({
                type: "POST",
                url: "/servicios/servicio_geo/comuna_listado_id_region",
                datatype: "Json",
                data: { id_region: $('#Region').val() },
                success: function (data) {
                    $.each(data, function (index, value) {
                        $('#Comunas').append('<option value="' + value.id_comuna + '">' + value.comuna + '</option>');
                    });
                }
            });
        });


    });
</script>
<script>

    $(function () {






    });






</script>
<div>
    @Html.DropDownList("Region", new SelectList(string.Empty, "Value", "Text"), "Seleccione una region", new { @style = "width:250px;" })
</div>

<div style="margin-top:50px;">
        @Html.DropDownList("Comunas", new SelectList(string.Empty, "Value", "Text"), "Seleccione una comuna", new{ @style="width:250px;"})
    </div>


















/////////////////////////////////////



aca  el controlador



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace repuestos.Controllers.servicios
{
    public class servicio_geoController : Controller
    {
        public JsonResult regiones_listado()
        {
            var db = new repuestos.Models.repuestosEntities();
            return Json(db.regiones .ToList(), JsonRequestBehavior.AllowGet);
        }
        public JsonResult comuna_listado_id_region(int id_region)
        {

            int Id = Convert.ToInt32(id_region);
            var db = new repuestos.Models.repuestosEntities();
            var states = from a in db.comunas where a.id_region == Id select a;
            return Json(states);
        }
    }
}




/////////////////////////////////////////////////////////////////////

aca va el router




using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace repuestos
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
   routes.MapRoute(
         name: "Default1",
         url: "servicios/{controller}/{action}/{id_region}",
         defaults: new { controller = "servicio_geo", action = "comuna_listado_id_region", id_region = UrlParameter.Optional }
     );
            routes.MapRoute(
            name: "Default12",
            url: "servicios/{controller}/{action}/{id}",
            defaults: new { controller = "servicio_geo", action = "regiones_listado", id = UrlParameter.Optional }
        );

        
          



            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
         




          
        }
    }
}