C# 使用getJSON MVC4 C/Jquery从控制器动态加载选择列表
我是MVC和Jquery的新手,我正在尝试从数据库动态加载数据以填充下拉列表。尽管数据是从控制器返回的,但它不会显示在下拉列表中。这里怎么了 这是我的控制器代码:C# 使用getJSON MVC4 C/Jquery从控制器动态加载选择列表,c#,jquery,asp.net-mvc,asp.net-mvc-4,C#,Jquery,Asp.net Mvc,Asp.net Mvc 4,我是MVC和Jquery的新手,我正在尝试从数据库动态加载数据以填充下拉列表。尽管数据是从控制器返回的,但它不会显示在下拉列表中。这里怎么了 这是我的控制器代码: public JsonResult GetReasonforLeave(int typecode) { List<LeaveReason> reason_list = itlbg1.LeaveReasons.Where(f => f.LeaveType_typeCode == typecode).To
public JsonResult GetReasonforLeave(int typecode)
{
List<LeaveReason> reason_list = itlbg1.LeaveReasons.Where(f => f.LeaveType_typeCode == typecode).ToList();
return Json(reason_list, JsonRequestBehavior.AllowGet);
}
以下是jquery:
function getreason(selecteditem) {
sel_val = selecteditem.value;
$.getJSON("/Leave/GetReasonforLeave", { typecode: sel_val })
.done(function (data) {
var options = $("#reason");
$.each(data, function (item) {
options.append($("<option />").val(item.reasonID).text(item.description));
});
});
}
斯蒂芬要求的改变成功了。这是工作代码供参考。谢谢你,斯蒂芬。 Jquery:
尝试$.Ekdata,函数索引,项目{也一样,除非LeVaReason只包含2个属性-推理和描述——你在发送不必要的数据,只考虑发送你需要的2个属性-Valdata=ITLBG1.LeValaseNo.WAFEF=> F.LeaveTypEyType Ecde==Type EndeCode.SeCalc= >新{Value= R.RealIDID,text =描述};感谢对控制器的改进,我尝试了它,但alertdata;没有返回任何数据。这里的索引变量是什么意思?请参阅-回调需要两个参数,Integer indexInArray和Object valueThank感谢您提供了信息性的响应Stephen。我将尝试找出错误。您可能还希望包括options.empty to在填充新选项之前,请删除任何现有选项。更新了答案。你们真是太棒了。事实上,你们搞错了-在每次迭代中清除选项-options.empty;需要在$之前进行。每条语句:是的。我想知道为什么只加载第一个选项。现在所有选项都已修复:
function getreason(selecteditem) {
sel_val = selecteditem.value;
$.getJSON("/Leave/GetReasonforLeave", { typecode: sel_val })
.done(function (data) {
alert(data);
var options = $("#reason_dd");
options.empty();
$.each(data, function (index, item) {
options.append($("<option />").val(item.value).text(item.text));
});
});
}
public JsonResult GetReasonforLeave(int typecode)
{
var reason_list = itlbg1.LeaveReasons.Where(f => f.LeaveType_typeCode == typecode).Select(r => new { value = r.reasonID, text = r.description });
return Json(reason_list, JsonRequestBehavior.AllowGet);
}