C# 使用getJSON MVC4 C/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

我是MVC和Jquery的新手,我正在尝试从数据库动态加载数据以填充下拉列表。尽管数据是从控制器返回的,但它不会显示在下拉列表中。这里怎么了

这是我的控制器代码:

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);

        }