I have a two cascading dropdown, when I run the application everything works fine, because the cascade works, but when I get the value of the dropdown only get the value of first dropdown. The second I always get the value of zero.
The ViewModel code:
public class MyViewModel
{
public string SelectedUniversidadId { get; set; }
public string SelectedCiudadId { get; set; }
public IEnumerable<UNIVERSIDAD> Universidades { get; set; }
}
Partial view code:
<script type="text/javascript">
$(function () {
$('#universidad').change(function () {
var selectedUniversidadId = $(this).val();
$.getJSON('@Url.Action("GetCiudadList", "Consultorio", new { Area = "Superusuario", controller = "Consultorio" })', { UniversidadId: selectedUniversidadId }, function (myData) {
var citiesSelect = $('#ciudad');
citiesSelect.empty();
$.each(myData, function (index, itemData) {
citiesSelect.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});
});
</script>
@model RolesMVC3.Areas.Superusuario.Models.MyViewModel
<div>
Universidad:
@Html.DropDownListFor(x => x.SelectedUniversidadId, new SelectList(ViewBag.IdUniversidad, "IdUniversidad", "Nombre"), "-- Selecione Universidad --", new { id = "universidad" })
</div>
<div>
Ciudad:
@Html.DropDownListFor(x => x.SelectedCiudadId, Enumerable.Empty<SelectListItem>(), "-- Seleccione Ciudad --", new { id = "ciudad" })
</div>
Controller code:
public ActionResult GetCiudadList(int UniversidadId)
{
decimal idd = (decimal)UniversidadId;
var universidades = (from u in db.UNIVERSIDAD
join s in db.SEDE_UNIVERSIDAD on u.IdUniversidad equals s.IdUniversidad
join c in db.CIUDAD on s.IdCiudadSede equals c.IdCiudad
where u.IdUniversidad == idd
select c).ToList();
var myData = universidades.Select(a => new
{
Text = a.NombreCiudad,
Value = a.IdCiudad.ToString(),
});
return Json(myData, JsonRequestBehavior.AllowGet);
CADAVID
Member
18 Points
56 Posts
Cascading DropDown not return value
Mar 26, 2012 01:03 AM|LINK
I have a two cascading dropdown, when I run the application everything works fine, because the cascade works, but when I get the value of the dropdown only get the value of first dropdown. The second I always get the value of zero.
The ViewModel code:
public class MyViewModel { public string SelectedUniversidadId { get; set; } public string SelectedCiudadId { get; set; } public IEnumerable<UNIVERSIDAD> Universidades { get; set; } }Partial view code:
<script type="text/javascript"> $(function () { $('#universidad').change(function () { var selectedUniversidadId = $(this).val(); $.getJSON('@Url.Action("GetCiudadList", "Consultorio", new { Area = "Superusuario", controller = "Consultorio" })', { UniversidadId: selectedUniversidadId }, function (myData) { var citiesSelect = $('#ciudad'); citiesSelect.empty(); $.each(myData, function (index, itemData) { citiesSelect.append($('<option/>', { value: itemData.Value, text: itemData.Text })); }); }); }); }); </script> @model RolesMVC3.Areas.Superusuario.Models.MyViewModel <div> Universidad: @Html.DropDownListFor(x => x.SelectedUniversidadId, new SelectList(ViewBag.IdUniversidad, "IdUniversidad", "Nombre"), "-- Selecione Universidad --", new { id = "universidad" }) </div> <div> Ciudad: @Html.DropDownListFor(x => x.SelectedCiudadId, Enumerable.Empty<SelectListItem>(), "-- Seleccione Ciudad --", new { id = "ciudad" }) </div>Controller code:
public ActionResult GetCiudadList(int UniversidadId) { decimal idd = (decimal)UniversidadId; var universidades = (from u in db.UNIVERSIDAD join s in db.SEDE_UNIVERSIDAD on u.IdUniversidad equals s.IdUniversidad join c in db.CIUDAD on s.IdCiudadSede equals c.IdCiudad where u.IdUniversidad == idd select c).ToList(); var myData = universidades.Select(a => new { Text = a.NombreCiudad, Value = a.IdCiudad.ToString(), }); return Json(myData, JsonRequestBehavior.AllowGet);Thanks and blessings
ignatandrei
All-Star
135160 Points
21680 Posts
Moderator
MVP
Re: Cascading DropDown not return value
Mar 26, 2012 01:11 AM|LINK
please see
http://bit.ly/mvc_ajax_jquery
and intercept ajax errors.