Hi.
I'm trying to display names of all users of the current tenant in a dropdown. I tried using the following ways to get Users list, but didn't succeed
<ins>Method 1)</ins> In the controller, I tried injecting UserManagerand then in the action method, wrote the following code
var allUsers = _userManager.Users;
ViewBag.DdlUsers = new SelectList(allUsers, "Id", "value", null);
<ins>Method 2)</ins> In the controller, I tried injecting UserAppServiceand then in the action method, wrote the following code
var allUsers = var allUsers = await _userAppService.GetUsers(new GetUsersInput());
ViewBag.DdlUsers = new SelectList(allUsers, "Id", "value", null);
In both cases I'm getting the following error "The operation cannot be completed because the DbContext has been disposed."
I would also like to know if there is a way to get this list in Javascript as JSON
6 Answer(s)
-
0
Hi,
Actually both of your codes should work, I couldn't understand why do you get that error. Can you share full code of your controller if possible ?
And you can get list of users from javascript using abp proxy services. You can check user list page in order to do that. It has the same logic but just adds paging parameters to query.
-
0
Here is my controller. Please check the '_CreateOrEditKPI' Action
using Abp.AutoMapper; using Abp.Domain.Repositories; using PlanQube.Authorization.Users; using PlanQube.Authorization.Users.Dto; using PlanQube.Entities; using PlanQube.Utilities; using PlanQube.Web.Areas.Mpa.Models.KPI; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.Mvc; namespace PlanQube.Web.Areas.Mpa.Controllers { public class KPIController : Controller { private readonly IRepository<KPI> _KPIRepository; private readonly UserAppService _userAppService; private readonly UserManager _userManager; public KPIController(IRepository<KPI> KPIRepository, UserManager userManager, UserAppService userAppService)// UserAppService userAppService { _KPIRepository = KPIRepository; _userManager = userManager; _userAppService = userAppService; } // GET: Mpa/InitiativeKPI public async Task<ActionResult> Index() { var initiativeKPIs = (await _KPIRepository.GetAllListAsync()).MapTo<List<KPIViewModel>>().ToList(); return View(initiativeKPIs); } public PartialViewResult _CreateOrEditKPI(int? id) { var viewModel = new KPIViewModel(); if (id.HasValue) { var output = _KPIRepository.Get((int)id); viewModel = new KPIViewModel(output); } var allUsers = _userManager.Users; var allUsers = await _userAppService.GetUsers(new GetUsersInput()); ViewBag.DdlUsers = new SelectList(allUsers , "Id", "value", null); return PartialView("_CreateOrEditKPIModal", viewModel); } } }
For the second example, the code would be
public async Task<PartialViewResult> _CreateOrEditKPI(int? id) { var viewModel = new KPIViewModel(); if (id.HasValue) { var output = _KPIRepository.Get((int)id); viewModel = new KPIViewModel(output); } var allUsers = await _userAppService.GetUsers(new GetUsersInput()); ViewBag.DdlUsers = new SelectList(allUsers , "Id", "value", null); return PartialView("_CreateOrEditKPIModal", viewModel); }
-
0
In Javascript, I tried the following
var _userService = abp.services.app.user; var allUsers = _userService.getUsers({ Filter : ""});
and then in browser console, I tried to display allUser, it returns a deffered object as shown in the screenshot.....
I also tried
allUsers.done(function(result){ console.log(result); });
I would like to know how can I fetch the list in javascript
-
0
Can you try this ?
_userService.getUsers({ Filter : ""}) .done(function(result) { var users = result.items; console.log(users); });
-
0
Hi,
_userService.getUsers({ Filter : ""}) .done(function(result) { var users = result.items; console.log(users); });
This particular code did worked for me. Thanks.
I'm still trying to figure out why I'm not being able to fetch the list of users in my controller.
-
0
Hi,
The problem with your controller is, it's derived from regular MVC Controller. Can you try to derive it from [YourProjectNameControllerBase] ?