我也遇到过类似的问题,我不得不将城市加载到
DropDownList
基于选定的状态。我通过使用WebApi和AJAX解决了这个问题。
首先创建一个接收
branchId
参数,然后使用LINQ检索与
布兰奇德
.
它应该看起来有点像这样:
WepApi控制器代码(适用于房间):
[Route("api/roomsByBranch/{branchId}")]
public List<Room> GetRoomsByGymLocation(int branchId)
{
var roomsByGymLocation = _context.Rooms.Where(room => room.BranchId == branchId).ToList();
return roomsByGymLocation;
}
WepApi控制器代码(分支机构):
[Route("api/branches")]
public List<Branch> GetBranches()
{
var branches = _context.Branches.ToList();
return branches;
}
在这里,您可以为下拉列表提供一个空列表,因为您将使用AJAX来填充列表。
查看代码(Razor):
<div class="form-group">
@Html.DropDownListFor(b => b.Branch.Id, new SelectList(new List<string>(), "Id", "Name"), new { @class = "form-control", id="branchesDropDown" })
</div>
<div class="form-group">
@Html.DropDownListFor(r => r.Room.Id, new SelectList(new List<string>(), "Id", "Name"), new { @class = "form-control", id="roomsDropDown" })
</div>
现在您需要使用
jQuery AJAX
填充
下拉框
有健身房。
查看代码(脚本):
@section scripts
{
$(document).ready(function () {
var branchesDropDown = $("#branchesDropDown ");
var roomsDropDown= $("#roomsDropDown");
branchesDropDown.ready(function () {
$.ajax({
url: "/api/branches",
dataType: "json",
success: function (data) {
$.each(data, function () {
branchesDropDown.append("<option value='" + this.Id + "'>" + this.Name + "</option>")
});
}
}).done(function () {
$.ajax({
url: "/api/roomsByBranch/" + @Model.Branch.Id,
dataType: "json",
success: function (data) {
$.each(data, function () {
roomsDropDown.append("<option value='" + this.Id + "'>" + this.Name + "</option>");
});
}
});
});
branchesDropDown.on("change", function () {
$.ajax({
url: "/api/roomsByBranch/" + branchesDropDown.val(),
dataType: "json",
success: function (data) {
roomsDropDown.empty();
$.each(data, function () {
roomsDropDown.append("<option value='" + this.Id + "'>" + this.Name + "</option>");
});
}
});
});
}