通过 ajax 使用实体数据库填充下拉列表
Populate a dropdown with entity database via ajax
正如标题所说,我正在尝试使用 ajax 从我的 ApiController 填充下拉列表,但我有点迷路了。我基本上有一个实体 table 可以带回一堆部门名称。调试后,我知道我的 table 正在带回数据,因为它显示了部门名称。所以我觉得问题主要出在ajax。当我查看页面时,下拉列表只显示 'nothing selected' 并且有一个空列表。在我的 ApiController 中,我有:
[RoutePrefix("Api/Request")]
public class NewUserController : ApiController
{
private readonly ZeusEntities _zeus_Entity;
public NewUserController(ZeusEntities zeus)
{
_zeus_Entity = zeus;
}
[Route("Departments")]
[HttpGet]
[CustomApiAuthorize(Roles = UserRole.HR)]
public async Task<IHttpActionResult> GetDepartments()
{
var departments = await _zeus_Entity.DEPARTMENT.Where(z => z.B_DELETE == 0).Select(z => z.S_NAME).Distinct().ToListAsync();
return Ok(departments);
}
}
在我看来,我有:
<div class="form-group col-xs-12 col-sm-4">
<div class="input-group ">
<span class="input-group-addon white">Department</span>
<select class="form-control gray" id="departmentSelect" type="text" </select>
</div>
</div>
内联:
$.ajax({
type: "GET",
url: "@Url.Action("Departments", "Api/Request")",
data: "{}",
success: function (data) {
var s = '<option value="-1">Please Select a Department</option>';
for (var i = 0; i < data.length; i++) {
s += '<option value="' + data[i].I_PATTERNID + '">' + data[i].S_NAME + '</option>';
}
$("#departmentSelect").html(s);
}
});
你能给我指出正确的方向吗?
谢谢
所以我将函数的 ajax 更改为 $.each 并意识到我正在调用 table 列名称而不是我分配给数据的变量名称。
$.each(deptList, function (key, department) {
departmentsHtml += "<option value='" + department.DeptId + "'>" + department.Department + "</option>"
});
我觉得我忽略了这一点很傻。尽管如此,这还是解决了我的问题。
正如标题所说,我正在尝试使用 ajax 从我的 ApiController 填充下拉列表,但我有点迷路了。我基本上有一个实体 table 可以带回一堆部门名称。调试后,我知道我的 table 正在带回数据,因为它显示了部门名称。所以我觉得问题主要出在ajax。当我查看页面时,下拉列表只显示 'nothing selected' 并且有一个空列表。在我的 ApiController 中,我有:
[RoutePrefix("Api/Request")]
public class NewUserController : ApiController
{
private readonly ZeusEntities _zeus_Entity;
public NewUserController(ZeusEntities zeus)
{
_zeus_Entity = zeus;
}
[Route("Departments")]
[HttpGet]
[CustomApiAuthorize(Roles = UserRole.HR)]
public async Task<IHttpActionResult> GetDepartments()
{
var departments = await _zeus_Entity.DEPARTMENT.Where(z => z.B_DELETE == 0).Select(z => z.S_NAME).Distinct().ToListAsync();
return Ok(departments);
}
}
在我看来,我有:
<div class="form-group col-xs-12 col-sm-4">
<div class="input-group ">
<span class="input-group-addon white">Department</span>
<select class="form-control gray" id="departmentSelect" type="text" </select>
</div>
</div>
内联:
$.ajax({
type: "GET",
url: "@Url.Action("Departments", "Api/Request")",
data: "{}",
success: function (data) {
var s = '<option value="-1">Please Select a Department</option>';
for (var i = 0; i < data.length; i++) {
s += '<option value="' + data[i].I_PATTERNID + '">' + data[i].S_NAME + '</option>';
}
$("#departmentSelect").html(s);
}
});
你能给我指出正确的方向吗? 谢谢
所以我将函数的 ajax 更改为 $.each 并意识到我正在调用 table 列名称而不是我分配给数据的变量名称。
$.each(deptList, function (key, department) {
departmentsHtml += "<option value='" + department.DeptId + "'>" + department.Department + "</option>"
});
我觉得我忽略了这一点很傻。尽管如此,这还是解决了我的问题。