我想根据另一个下拉列表的选择填充一个下拉列表。
我知道这是一个相当普遍的问题,整整两天我一直在尝试我在网上找到的不同样本,但无济于事!
这是我的代码:
控制器:
public List<SelectListItem> listTestCases(string id)
{
IQueryable<SelectListItem> A = repository.listTestCases(id);
return (A.toList());
}
public JsonResult listTestCases_2(string id)
{
IQueryable<SelectListItem> A = repository.listTestCases(id);
return Json(A);
}
我有两种方法,一种返回 List,另一种返回 JSONResults,我用这两种方法尝试了我在网上找到的所有方法。脚本:
<script>
$(document).ready(function() {
$('select#testCategoriesUniqueId').change(function() {
var testCategory = $(this).val();
$.ajaxSetup({ cache: false });
alert(testCategory);
$.getJSON("TestInput/listTestCases/" , {id: testCategory}, function(data) {
alert("here");
});
});
});
使用上面的代码,代码通过listTestCases,并得到结果,但它没有进入成功函数。(不提醒)
我试过了:
$.getJSON("TestInput/listTestCases/" + testCategory, null, function(data) {
alert("here");
});
毫不奇怪,相同的结果。
我什至尝试过:(json-p)
$.ajax({
url: "TestInput/listTestCases/" + testCategory,
dataType: "json-p",
success: function(data) {
alert(data.length);
var S = "";
$("#testCasesUniqueId").removeOption(/./);
for (var i = 0; i < data.length; i++) {
S += data[i];
var val = data[i].Value;
var text = data[i].Text;
$("#testCasesUniqueId").addOption(val, text, false);
}
alert(S);
}
}
);
结果是一个字符串(System.collections.List[...SelectListItem]。并没有给我列表的对象。所以我用listTestCases2尝试了它,它甚至没有调用该方法。
我在某处读到需要使用 post 而不是 get,甚至尝试过 postJSON。没有结果。
基本上我迷路了。