我在 SO 上进行了搜索,但没有找到我遇到的问题的任何答案。
我创建了一个 linq 来从两个表中获取所有数据,并使用一个 ajax 调用来获取新数据并在另一个下拉列表发生变化时填充我的下拉列表。
这是我目前所拥有的:
Controller
public ActionResult Index(int? page)
{
vEntities db = new vEntities();
var estados = (from e in db.estado
select e);
var localidades = (from l in db.localidade
select l);
ViewData["estados"] = new SelectList(estados, "cod", "descricao");
ViewData["localidades"] = new SelectList(localidades, "id", "descricao");
return View();
}
public ActionResult GetLocalidades(string codEstado)
{
vEntities db = new vEntities();
var info = (from l in db.localidade
where l.cod_estado == codEstado
select l);
return Json(info);
}
查看
<%= Html.DropDownList("estados", ViewData["estados"] as SelectList, String.Empty)%>
<%= Html.DropDownList("localidade", ViewData["localidades"] as SelectList, String.Empty)%>
<script type="text/javascript">
$(document).ready(function () {
$("#estados").change(function () {
var ddlLocalidade = $("#localidade")[0];
ddlLocalidade.length = 0;
var cod = $(this).val();
$.post(
"/Home/GetLocalidades",
{ codEstado: cod },
function (data) {
var option;
$.each(data, function () {
option = new Option(this.descricao, this.id);
ddlLocalidade.options.add(option);
});
}
);
});
});
</script>
当我更改激活 JS 函数的第一个下拉列表时,我在“Getocalidades”方法返回 Json 后立即收到此错误:
There is already an open DataReader associated with this Connection which must be closed first
我想我在格式化代码时遇到了一些问题 :) 抱歉。
我看不出连接有任何问题,谁能告诉我哪里出了问题?
提前致谢
最佳答案
这只是一个猜测。但是如果你改变这些行会发生什么
var estados = (from e in db.estado select e);
var localidades = (from l in db.localidade select l);
var info = (from l in db.localidade where l.cod_estado == codEstado select l);
到
var estados = (from e in db.estado select e).ToList();
var localidades = (from l in db.localidade select l).ToList();
var info = (from l in db.localidade where l.cod_estado == codEstado select l).ToList();
关于c# - "DataReader already open"有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755037/