前提: 根据第一个中选择的值获取下拉列表的内容。 文字数据成功返回。 LINQ2SQL Datacontext上的LINQ查询失败。
作为这个MVC / LINQ / jQuery的新手,我一直在争取HOURS,试图弄清楚我对代码的理解是什么问题。当我对我的值进行硬编码时,一切正常,但是当我试图查询LINQ2SQL datacontext时,各种奇怪的东西开始发生,最后,当我将查询结果复制到一个新对象时,一切都恢复了!请原谅我在LINQ方面缺乏语言能力,但我认为这与LINQ2SQL数据的“连通性”有关。当我创建另一个表示查询数据的列表时,一切都很好,但如果我尝试使用查询数据本身,jQuery的世界就会崩溃(并且没有错误 - 这使得很难弄明白)。
我基本上喜欢LINQ2SQL的“连通性”的引用或解释,以及它是如何/为什么会出现问题,特别是在这些远程/异步调用情况下!
请参阅下面的代码 - 希望它有意义&先感谢您 :) 基本布局:
<script type="text/javascript">
$(document).ready(function() {
$("#CaseTypeCategoryId").change(function() {
$.getJSON("/Cases/CaseNatures", { caseTypeCategoryId: $("#CaseTypeCategoryId option:selected").val() }, function(data) {
$("#CaseNatureId option").remove();
$("#CaseNatureId").fillSelect(data);
});
});
});
</script>
<p>
<label for="CaseTypeCategoryId">Case Type:</label>
<%= Html.DropDownList("CaseTypeCategoryId") %>
</p>
<p>
<label for="CaseNatureId">Case Nature</label>
<select id="CaseNatureId" name="CaseNatureId></select>
</p>
Controller.aspx
最初它只是一个
SelectList() { new ListItem() { Text = "--Select A Case Nature--", Value = "" }}它工作得很好!然后我试了
public JsonResult CaseNatures(int caseTypeCategoryId) { return this.Json(_caseService.GetCaseNatures(caseTypeCategoryId) .ToList()); }
这失败了 - 没有javascript错误,没有编译问题,直到我尝试手动将数据转储到新列表中才能弄明白,我终于确定了:
public JsonResult CaseNatures(int caseTypeCategoryId) { List returnList = new List(); returnList.Add(new ListItem() { Text = "--Select A Case Nature--", Value = "" }); _caseService.GetCaseNatures(caseTypeCategoryId) .ToList() .ForEach(p => returnList.Add(new ListItem() { Value = p.CaseNatureId.ToString(), Text = p.CaseNatureText })); return this.Json(returnList); }
答案 0 :(得分:1)
看here - 类似的问题。
答案 1 :(得分:1)
在你的句子中使用JsonRequestBehavior.AllowGet:
this.Json(_caseService.GetCaseNatures(caseTypeCategoryId) .ToList(),JsonRequestBehavior.AllowGet);