在我看来,我使用了自动完成功能来搜索名称。搜索名称时,它会在下拉列表中显示数据库中的每个名称。
自动完成方法的功能是:如果我在文本框中输入字母j
,它应该仅显示j
,但是在检入控制器时,我有一个操作方法,在搜索框中输入内容后,在操作方法中传递字符串名称,当我调试代码时,在控制器中,名称为null
。
我在输入request.term
之类的数据时使用了data: { name: request.term }
,而它却使用了各自的名称,但是它必须将相同的名称传递给控制器,因为在我的控制器中,我编写了用于过滤并在服务中使用了包含(即类似运算符)。
值在搜索框中,在控制器中它正在传递null
。请帮帮我。
我尝试过将id
传递给ajax调用中的数据,但没有将其带入控制器中。它正在将null
传递给action方法。
服务:
public async Task<List<ManagerAllocationModel>> GetManager(string name)
{
List<ManagerAllocationModel> managerList = new List<ManagerAllocationModel>();
managerList = _mapper.Map<List<EmployeeHierarchy>, List<ManagerAllocationModel>>(await _employeeHierarchyService.ListAll());
managerList.Where(x => x.Tea[enter image description here][1]mManagerName.StartsWith(name));
return managerList;
}
控制器:
[HttpPost]
public async Task<List<ManagerAllocationModel>> getmanagerName(string name)
{
var manager =await employeeService.GetManager(name);
return manager;
}
查看:
<label asp-for="@Model.managerAllocation.TeamManagerName" name="name" id="name" class="control-control">TeamManager Name</label>
<input asp-for="@Model.managerAllocation.TeamManagerName" class=" form-control " required="required" placeholder="Enter Manager Name">
<span asp-validation-for="@Model.managerAllocation.TeamManagerName" id="namerequired"class="text-danger"></span>
$("#managerAllocation_TeamManagerName").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Employee/getmanagerName/",
data: { name: request.term },
type: "post",
contentType: "application/json;charset=utf-8",
success: function (data) {
response($.map(data, function (item) {
console.log(item);
return { label: item.teamManagerName, value: item.teamManagerName };
}))
},
});
},
minlength: 3
});