我在我的视图中填充了两个DropDownList:
<tr>
<td class="info_label">City</td>
<td>@Html.DropDownListFor(m=>m.User.City,Model.City,"-- Chọn thành phố --",new { @class = "dropdown" })</td>
</tr>
<tr>
<td class="info_label">Ward</td>
<td>@Html.DropDownListFor(m => m.User.Ward, Model.Ward, "-- Chọn quận --" ,new { @class = "dropdown" })</td>
</tr>
当我改变第一个ddl的值时,第二个ddl也会改变,取决于第一个ddl的值。我有一个jquery脚本来实现这一目标。这是我的jquery代码:
function LocationValue() {
$("#User_City").change(function () {
var cityName = $("#User_City").val();
if (cityName == null) {
$("Ward").prop("disabled", true);
}
else {
$("Ward").prop("disabled", false);
getWards(cityName);
}
});
}
function getWards(cityName) {
$.ajax({
url: "/Checkout/Wards",
data: { CityName: cityName },
dataType: "json",
type: "POST",
error: function () {
return;
},
success: function (data) {
var items = "";
$.each(data, function (i, item) {
items += "<option value=\"" + item.Value + "\">" + item.Text + "</option>";
});
$("#User_Ward").html(items);
}
});
}
和我的控制器中的Post方法:
[HttpPost]
public ActionResult Cities()
{
var cities = ILocaRepo.Cities;
return Json(new SelectList(cities,"CityID","CityName"));
}
[HttpPost]
public ActionResult Wards(string CityName)
{
var wards = ILocaRepo.ListWardByCityName(CityName);
return Json(new SelectList(wards, "WardID", "WardName"));
}
由于某种原因,2 ddl的来源有Value = x.CityName.ToString()
,没有CityID(int)。在firebud中,为什么第二个ddl的repsone总是[]
。我错误的任何建议?
答案 0 :(得分:1)
在firebud中,为什么第二个ddl的repsone总是[]
可能是因为您正在调用的ListWardByCityName
方法返回一个空列表。如果此方法未按城市名称找到相应的条目,则可能会发生这种情况。调试此方法以查看发生这种情况的原因。
作为旁注,您似乎使用了一些$('#User_City')
选择器,但您的下拉列表中没有此ID。确保您已为其分配了正确的ID:
@Html.DropDownListFor(
m => m.User.City,Model.City,
"-- Chọn thành phố --",
new { @class = "dropdown", id = "User_City" }
)