如何在带有搜索字符串的 mvc 控制器中使用搜索功能
How to use Search functionality in mvc controller with searchstring
我正在尝试在控制器方法中实现搜索功能,但我无法使用“Get”子句,它抛出类型转换错误。我在
收到错误
getAll = getAll.Content.Where(a => a.Firstname.Contains(searchString) || a.Lastname.Contains(searchString));
.控制器方法
[HttpGet]
public async Task<IActionResult> Index(UserViewModel userVM)
{
var userData = await _userSessionCache.GetUserSessionWithUserIdAsync();
var tenantClientId = userData.TenantClientId;
var getAll = await _userApiService.GetAll(tenantClientId);
var searchString = userVM.SearchString;
if(!string.IsNullOrEmpty(searchString))
{
getAll = getAll.Content.Where(a => a.Firstname.Contains(searchString) || a.Lastname.Contains(searchString));
}
if (!getAll.IsSuccessful)
{
throw new System.Exception("Unable to get User Data");
}
var dataList = getAll.Content;
var vm = new UserViewModel();
vm.SetUser(dataList);
return View(vm);
}
.cs
任务> GetAll(Guid tenantClientId);
getAll -> ApiResponse<List>
getAll.Content -> List
getAll.Content.Where(...) -> IEnumerable
所以你尝试
ApiResponse<List> getAll = IEnumerable;
您遇到类型转换错误,因为 IEnumerable
无法转换为 ApiResponse<List>
。
您应该尝试使用列表变量:
[HttpGet]
public async Task<IActionResult> Index(UserViewModel userVM)
{
var userData = await _userSessionCache.GetUserSessionWithUserIdAsync();
var tenantClientId = userData.TenantClientId;
var getAll = await _userApiService.GetAll(tenantClientId);
var searchString = userVM.SearchString;
if (!getAll.IsSuccessful)
{
throw new System.Exception("Unable to get User Data");
}
var dataList = getAll.Content;
if(!string.IsNullOrEmpty(searchString))
{
dataList = dataList
.Where(a => a.Firstname.Contains(searchString) ||
a.Lastname.Contains(searchString))
.ToList();
}
var vm = new UserViewModel();
vm.SetUser(dataList);
return View(vm);
}
我正在尝试在控制器方法中实现搜索功能,但我无法使用“Get”子句,它抛出类型转换错误。我在
收到错误getAll = getAll.Content.Where(a => a.Firstname.Contains(searchString) || a.Lastname.Contains(searchString));
.控制器方法
[HttpGet]
public async Task<IActionResult> Index(UserViewModel userVM)
{
var userData = await _userSessionCache.GetUserSessionWithUserIdAsync();
var tenantClientId = userData.TenantClientId;
var getAll = await _userApiService.GetAll(tenantClientId);
var searchString = userVM.SearchString;
if(!string.IsNullOrEmpty(searchString))
{
getAll = getAll.Content.Where(a => a.Firstname.Contains(searchString) || a.Lastname.Contains(searchString));
}
if (!getAll.IsSuccessful)
{
throw new System.Exception("Unable to get User Data");
}
var dataList = getAll.Content;
var vm = new UserViewModel();
vm.SetUser(dataList);
return View(vm);
}
.cs
任务
getAll -> ApiResponse<List>
getAll.Content -> List
getAll.Content.Where(...) -> IEnumerable
所以你尝试
ApiResponse<List> getAll = IEnumerable;
您遇到类型转换错误,因为 IEnumerable
无法转换为 ApiResponse<List>
。
您应该尝试使用列表变量:
[HttpGet]
public async Task<IActionResult> Index(UserViewModel userVM)
{
var userData = await _userSessionCache.GetUserSessionWithUserIdAsync();
var tenantClientId = userData.TenantClientId;
var getAll = await _userApiService.GetAll(tenantClientId);
var searchString = userVM.SearchString;
if (!getAll.IsSuccessful)
{
throw new System.Exception("Unable to get User Data");
}
var dataList = getAll.Content;
if(!string.IsNullOrEmpty(searchString))
{
dataList = dataList
.Where(a => a.Firstname.Contains(searchString) ||
a.Lastname.Contains(searchString))
.ToList();
}
var vm = new UserViewModel();
vm.SetUser(dataList);
return View(vm);
}