我正在尝试根据第一个下拉列表(包含国家)中选择的内容填充第二个下拉列表(包含县)。
我有一个名为 GetCounties 的控制器操作:
public JsonResult GetCounties(string id)
{
DBEntities dc = new DBEntities();
JsonResult result = new JsonResult();
var filteredDivisions = from div in dc.Divisions
where div.CountryID == 1 //id
select div;
result.Data = filteredDivisions.ToList();
return Json(result.Data, JsonRequestBehavior.AllowGet);
// return Json(new[] {
// new { Id = filteredDivisions.ToArray()[0].DivisionID, Value = filteredDivisions.ToArray()[0].DivisionName },
// new { Id = 2, Value = "value 2" },
// new { Id = 3, Value = "value 3" },
//}, JsonRequestBehavior.AllowGet);
}
注意被注释掉的部分。这对我来说很好,(我从分区列表中获得第一个值,另外两个称为“值 2”和“值 3”。我用它来测试回调,但这是唯一给我的东西结果。使用:
return Json(result.Data, JsonRequestBehavior.AllowGet);
在视图方面没有取得任何成就。调试时,所有正确的值都在那里,但它们不会出现在视图侧的下拉列表中。正如我所说,我得到的唯一结果是使用被注释掉的代码(硬编码值,当然不够好)。我尝试使用 for 循环遍历列表以填充数组,但没有任何效果,我收到错误,例如匿名类型是只读的,所以我无法再次设置它。
这是我的jQuery代码:
$(function () {
$.getJSON('/Entity/GetCounties', function (result) {
var ddl = $('#DivisionsList');
ddl.empty();
$(result).each(function () {
$(document.createElement('option'))
.attr('value', this.Id)
.text(this.Value)
.appendTo(ddl);
});
});
});
分区列表当然是包含所有县的下拉列表,通过使用上面未注释的返回语句,它只返回不变,即包含其所有值,而不仅仅是根据所选国家应该出现的值。所以请我如何用过滤后的结果填充一个数组,以便我可以使用 JSON 将它返回到视图中?我想使用我发布的这个代码,因为它是唯一有效的。我只需要用正确的值交换硬编码值。那就是我遇到麻烦的地方。
请帮我。