我想要做的是从下拉列表中选择一个区域,然后在下面的同一页面上显示区域:leaid,name,category,county,streetline1,streetline2,city,stateprovince和postalcode使用JSON调用下拉到我的控制器,它将查询数据库。我指定这些列,因为这不是区表中的所有列。现在我有一个文本区域来显示结果,应该格式化如下:
leaid name category county streetline 1 streetline2 city etc ...
0435橙色..... ...... ...... ...... .....然后在此我将为另一个表调用另一个查询,并以相同的格式显示该区的所有员工。
我遇到的问题是我的文本区域框中没有显示任何内容。当它从JsonResult返回时,我的代码没有到达if(!response)
语句,最终什么都不做。
如果我需要解释更多,请告诉我。我对某些MVC还不熟悉。
更新:我尝试在查询字符串&中使用有效的ID当我从下拉列表中选择一个区域时,它工作正常。但是在查询之后,使用Firebug Lite for Chrome我收到500内部服务器错误。除此之外:" System.InvalidOperationException:序列化类型为' System.Data.Entity.DynamicProxies.District_B959D005D9073957EF5DDF15D4B22821F90F F068837E74B95429864C8DEB5D50'"
的对象时检测到循环引用我的使用JSON调用的视图:
<form>
<div>
@Html.DropDownListFor(m => m.SelectedDistrict, Model.Districts, "----Select District----")
</div>
<div>
@Html.TextArea("DistrictInformation", new { cols = 60, rows = 10 })
</div>
</form>
<script type="text/javascript" src="~/scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
var url = '@Url.Action("GetDistrictInfo", "District")';
var info = $('#DistrictInformation');
info.hide();
$(document).on('change', '#SelectedDistrict', function () {
info.val('').empty();
$.getJSON(url, { id: $(this).val() }, function (response) {
if (!response) {
return;
}
info.show();
$.each(response, function (item) {
info.append($.text(item.Text).val());
});
});
});
</script>
我的控制器与JsonResult&amp;查询:
public JsonResult GetDistrictInfo(string id)
{
var selectedDistrict = id;
var district = getDistrict(selectedDistrict);
return Json(district, JsonRequestBehavior.AllowGet);
}
internal IQueryable<District> getDistrict(string id)
{
var query = from District in db.Districts
where District.leaID.Equals(id)
select District;
return query;
}