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 }
);
}
}
}