Asp.net mvc 如何基于其他下拉列表将数据获取到DropDownList?

Asp.net mvc 如何基于其他下拉列表将数据获取到DropDownList?,asp.net-mvc,Asp.net Mvc,我有一个关于数据库的表(dept),字段是: 1 - id 2 - Division 3 - Designation 我正在从下拉列表中检索division数据,这是我的代码: public JsonResult GetDivision() { var division = db.Depts.GroupBy(x => x.Division) .Select(x => x.FirstOrDefault()).Ord

我有一个关于数据库的表
(dept)
,字段是:

1 - id
2 - Division
3 - Designation
我正在从下拉列表中检索
division
数据,这是我的代码:

public JsonResult GetDivision()
    {
        var division = db.Depts.GroupBy(x => x.Division)
                       .Select(x => x.FirstOrDefault()).OrderBy(x => x).ToList();
        return Json(division);
    }
现在我想在第二个下拉列表中根据部门名称获取指定数据

 public JsonResult GetDesignation(int StateId)
     {
         var department = db.Depts.Where(x => x.DeptId == StateId)
                          .OrderBy(x => x.Designation);
         return Json(department);
     }
Ajax代码:

 $(document).ready(function () {
             $('#division').change(function () {
                 $('#designation').empty();
                 $.ajax({
                     type: "POST",
                     url: "/Official/GetDesignation",
                     datatype: "Json",
                     data: { StateId: $('#division').val() },
                     success: function (data) {
                         $('#designation').append('<option value>--Select--</option>');
                         $.each(data, function (index, value) {
                                $('#designation').append('<option value="' + value.deptId + '">' + value.designation + '</option>');
                                            console.log(value);
                                });
                      }
               });
           });
当我从下拉列表中选择division时,我只得到一个名称,它来自id,但我想得到基于exmaple的division name的所有名称,我有这种类型的数据

id division               designation
1  CORPORATE AFFAIRS      Manager Corporate Affairs 
2  CORPORATE AFFAIRS      Manager BPR & PMO
3  CORPORATE AFFAIRS      Jr. Executive Corporate Governance

在第一个下拉列表中,我得到了一个“公司事务”,但当我选择“公司事务”时,我需要在第二个下拉列表中获得所有名称。好的,我认为您需要了解以下内容

这一行在这里:

   var department = db.Depts.Where(x => x.DeptId == StateId)                            
                   .OrderBy(x => x.Designation);
在最后进行SQL查询,这将导致以下情况:

   SELECT * FROM Depts WHERE DeptId = Something ORDER BY Designation
我假设DeptId是一个主键,它是表中唯一的值,当您处理上面的查询时,它只会带来一个或零个结果,这取决于是否有匹配项

我认为您应该更正从ajax帖子传递的值,您可以使用:

data: { StateId: $('#division').text() } 
而不是:

data: { StateId: $('#division').val() }
通过这种方式,可以将分区名称作为字符串传递,并按如下方式修改函数:

 public JsonResult GetDesignation(string Division)
 {
     var department = db.Depts.Where(x => x.Division == Division)
                      .OrderBy(x => x.Designation);
     return Json(department);
 }

它仍然不起作用,我完全按照你说的做了,但在第二个下拉列表中我什么也没有得到……我想我们需要知道两件事:第一,你能发布从分区选择生成的html吗?第二,您可以发布ajax请求返回的数据吗?它成功了!谢谢你需要问另一件事你能检查这个公共的JsonResult GetDesignation(string Division){var department=db.Depts.Where(x=>x.Division==Division).OrderBy(x=>x.Designation);返回Json(department);}现在我得到的是基于除法的名称,但我有一些名称相同,如何删除重复的名称呢?JsonResult GetDesignation(string division){var department=db.Depts.Where(x=>x.division==division).GroupBy(x=>x.designation).Select(x=>x.FirstOrDefault()).OrderBy(x=>x.designment).ToList();返回Json(系);}
 public JsonResult GetDesignation(string Division)
 {
     var department = db.Depts.Where(x => x.Division == Division)
                      .OrderBy(x => x.Designation);
     return Json(department);
 }