¿Cómo obtener un valor de propiedad de la base de datos en función de la lista desplegable en cascada de valores seleccionados?

Quiero obtener una propiedad de una entidad basada en pasar los ID de los elementos seleccionados de la lista desplegable en cascada … En cada cambio en el nivel 1 o en el nivel 2 de la lista desplegable en cascada, el precio debe actualizarse.

He implementado la lista desplegable en cascada. En la carga de la página, Leaguedropdown (Nivel 1) se llena y la segunda LeagueDivisiondropdown (Nivel 2) se llena cuando selecciono cualquier elemento del Nivel 1. Tengo que implementar la Calculadora de precios que debe calcular el valor del precio según los elementos seleccionados de la lista desplegable en cascada. Todos los precios son Almacenado en la base de datos y estoy usando Entity Framework. Estoy usando el método .change () y enviando la solicitud getJson para el Nivel 2 que está funcionando bien. También quiero la misma funcionalidad en el Nivel 1, pero ya usé el método .change () para poblar LeagueDivision, así que no tengo idea de cómo implementar esto también en el Nivel 1.

Apreciaré si alguien me guiará y estará agradecido.

Aquí está la vista y el guión

 

@using (Html.BeginForm("PriceCalculatorIndex", "PriceCalculator", FormMethod.Post, new { enctype = "multipart/form-data" })) {
@Html.LabelFor(m => m.SelectedLeague, new { @class = "control-lebel" }) @Html.DropDownListFor(m => m.SelectedLeague, Model.LeagueList, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.SelectedLeague)
@Html.LabelFor(m => m.SelectedLeagueDivision, new { @class = "control-lebel" }) @Html.DropDownListFor(m => m.SelectedLeagueDivision, Model.LeagueDivisionList, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.SelectedLeagueDivision)
@Html.LabelFor(m => m.Price) @Html.DisplayFor(m => m.Price)
} var leaguedivisionUrl = '@Url.Action("Fetchleaguedivision")'; var updatePrice = '@Url.Action("updatePrice")'; var divisions = $('#SelectedLeagueDivision'); $('#SelectedLeague').change(function () { divisions.empty(); $.getJSON(leaguedivisionUrl, { ID: $(this).val() }, function (data) { if (!data) { return; } divisions.append($('').val()); $.each(data, function (index, item) { divisions.append($('').val(item.Value).text(item.Text)); }); }); }); $('#SelectedLeagueDivision').change(function () { $.getJSON(updatePrice, { LeagueDivisionId: $(this).val(), LeagueId: $('#SelectedLeague').val() }, function (data) { if (!data) { return; } alert(data); //document.getElementById('#message').innerHTML = data; }); });

Resultado JSON para obtener el precio de la base de datos

  public JsonResult updatePrice(int LeagueId, int LeagueDivisionId) { HostBoostersDBEntities2 db = new HostBoostersDBEntities2(); CalculatorPrice updatedPrice = db.CalculatorPrices .Where(x => x.LeagueId == LeagueId && x.LeagueDivisionId == LeagueDivisionId) .FirstOrDefault(); decimal updatedPriceToView = (decimal)updatedPrice.Price; return Json(updatedPriceToView.ToString(), JsonRequestBehavior.AllowGet); } 

Por favor intente este código. Dar referencia de mis comentarios de javascript donde crees que todavía he entendido mal la pregunta.

  

He implementado con éxito de esta manera.

 @using (Html.BeginForm("PriceCalculatorIndex", "PriceCalculator", FormMethod.Post, new { enctype = "multipart/form-data" })) { 
@Html.LabelFor(m => m.SelectedLeague, new { @class = "control-lebel" }) @Html.DropDownListFor(m => m.SelectedLeague, Model.LeagueList, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.SelectedLeague)
@Html.LabelFor(m => m.SelectedLeagueDivision, new { @class = "control-lebel" }) @Html.DropDownListFor(m => m.SelectedLeagueDivision, Model.LeagueDivisionList, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.SelectedLeagueDivision)
}