如何从数据库中获取基于级联下拉列表选择值的属性值?

我想根据从级联下拉列表中传递所选项目的ID来获取实体的属性…在级联下拉列表的级别1或级别2中的每次更改时,必须更新价格。

我已经实现了级联下拉列表。 当我从第1级选择任何项目时,页面加载Leaguedropdown(第1级)填充和第二个LeagueDivisiondropdown(第2级)填充。我必须实施价格计算器 ,它应根据级联下拉列表中的选定项目计算价格值,所有价格均为存储在数据库中,我正在使用Entity Framework。 我正在使用.change()方法并发送Level 2的getJson请求,它正常工作。 我也想在Level 1上使用相同的function,但我已经使用.change()方法来填充LeagueDivision,所以我也不知道如何在Level 1上实现它。

如果有人指导我并感激,我将不胜感激。

这是视图和脚本

 

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

JSON结果从数据库中获取价格

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

请试试这段代码。 参考我的javascript评论你认为我仍然误解了这个问题。

  

我已经以这种方式成功实施了。

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