我试图在javascript中获取umbraco中所有活动的,因此未禁用的用户的列表。随着
entityResource.getAll("User")
我可以获得所有用户。
根据文档,还有后过滤器:
https://our.umbraco.org/apidocs/ui/#/api/umbraco.resources.entityResource。
在C#中,
User
有一个属性userState
,可以是Active
。
可悲的是,没有记录如何使用它们。通过尝试各种事情我只会遇到服务器错误。
编辑1:
我认为资源usersResource
(https://our.umbraco.org/apidocs/ui/#/api/umbraco.resources.usersResource)可以使用getPagedResults(options)
来实现我的目的。
但是当它添加到我的控制器的参数列表时
function ProjectManagementController($scope, umbRequestHelper, assetsService, dialogService, entityResource, userService, usersResource, $log, $http)
它仍无效。
我发现更改此控制器的任何代码都没有任何影响(例如alerts
或删除参数),只更改被调用方法中的代码(从另一个文件动态加载)确实有一个影响。
然而,将js库添加到调用的assetsService.load([ ])
然后工作。
我的控制器功能:
function ProjectManagementController($scope, umbRequestHelper, assetsService, dialogService, entityResource, userService, $log, $http) {
assetsService
.load([
"/App_Plugins/UmbracoProjectManagement/js/interfaceFunctions.js",
"/App_Plugins/UmbracoProjectManagement/js/jquery.signalR-2.2.3.min.js",
"/App_Plugins/UmbracoProjectManagement/js/app.js",
"/App_Plugins/UmbracoProjectManagement/js/UmbracoProjectManagement.NewTaskController.js",
"/App_Plugins/UmbracoProjectManagement/js/UmbracoProjectManagement.NewSwimlaneController.js"
])
.then(function () {
app($scope, dialogService, entityResource, userService, $http);
});
}
}
编辑:
我使用了Backoffice Api的调用作为解决方法:
C#代码:
public class KanBanBoardController : UmbracoAuthorizedApiController
{
public ActiveUsers GetActiveUsers()
{
UserState[] active = { UserState.Active };
long totalUsers;
var userEnumerable = Services.UserService.GetAll(0, int.MaxValue, out totalUsers, "Name", Direction.Ascending, active, null, null);
return new ActiveUsers
{
Users = userEnumerable.Select(user => new KanBanUser { Name=user.Name}).ToArray()
};
}
}
用户转移对象:
public class KanBanUser
{
[Column("Name")]
public string Name { get; set; }
}
public class ActiveUsers
{
[Column("Users")]
public KanBanUser[] Users { get; set; }
}