我在「創建」視圖中獲得級聯下拉列表,在第一個下拉框#regions
被選中後,第二個下拉框#districts
將呈現該區域的區域列表。從數據庫顯示子類別數據到級聯下拉列表
第一次加載時,如何從「數據庫」中的「區域」值返回到「編輯」視圖中的#districts
下拉列表?我只能顯示我的區域值,但空白區域值。
我的代碼的問題是,當「區域」下拉列表中改變了「區」下拉列表中只填入/選擇。
我搜索了很多關於此的帖子,但他們都在討論如何製作級聯下拉列表,但不顯示數據庫中的數據。
在編輯控制器:
var item = await _context.Items
.Include(i => i.District)
.SingleOrDefaultAsync(i => i.ID == id);
var model = new ViewModel { Title = item.Title, RegionID = item.District.RegionID, DistrictID = item.DistrictID };
List<Region> regions = new List<Region>();
regions = await _context.Regions.ToListAsync();
regions.Insert(0, new Region { ID = 0, Name = "-- Select a region --" });
List<District> districts = new List<District>();
ViewBag.RegionList = new SelectList(regions, "ID", "Name");
ViewBag.DistrictList = new SelectList(districts, "ID", "Name");
return View(model);
在編輯視圖:
<script type="text/javascript">
$(function() {
if ($("#regions").val() == '0') {
var districtDefaultValue = "<option value=''>-- Select a district --</option>";
$("#districts").html(districtDefaultValue).show();
}
$("#regions").change(function() {
var selectedItemValue = $(this).val();
var ddlDistrict = $("#districts");
$.ajax({
cache: false,
type: "GET",
url: '@Url.Action("GetDistrictByRegionId", "Items")',
data: { "id": selectedItemValue },
success: function (data) {
ddlDistrict.html('');
$.each(data, function (id, option) {
ddlDistrict.append($('<option></option>').val(option.id).html(option.name));
});
},
error: function (xhr, ajaxOptions, thrownError) {
alert('Error occurred in loading corresponding districts.');
}
});
});
});
很簡單!嘗試在選擇「區域」下拉列表時顯示不同的AJAX呼叫,並在「區域」下拉列表中顯示值。 –
@ Ashraf.Shk786不確定如何在AJAX中的$ .each'函數中選擇'
你的實現有多個問題,你甚至沒有顯示視圖代碼,我建議你看看[這個DotNetFiddle](https://dotnetfiddle.net/1bPZym) –