gpt4 book ai didi

c# - 在 Umbraco v7.1.4 中获取所有用户

转载 作者:行者123 更新时间:2023-11-30 14:10:20 25 4
gpt4 key购买 nike

我正在尝试检索我的 Umbraco 站点中所有用户的详细信息。这样做的目的是让内容创建者可以将用户名指定为网站匿名用户可以联系的内容的“所有者”(在将用户名与内容给出的用户名匹配后使用存储的电子邮件地址的简单“mailto”链接创作者)。

我已经能够使用以下方法获取用户详细信息:

var users = umbraco.BusinessLogic.User.getAll();

但我在 Visual Studio 中收到以下警告提示:

'Umbraco.BusinessLogic.User' is obsolete: '"Use the UserService instead"'

我创建了一个 UserService 实例,但 GetAll() 函数需要一些 BusinessLogic 函数不需要的参数。

如何让所有用户都使用 UserService?

是否有更好的方法来实现我想要实现的目标?

为澄清起见,这是我在已弃用的 BusinessLogic 中使用的以下代码:

var users = umbraco.BusinessLogic.User.getAll();
var owners = Umbraco.Field("owner").ToString().Split(',');

foreach (var user in users)
{
foreach (var owner in owners)
{
if (String.Equals(user.LoginName, owner))
{
<div class="owner">
<a href="mailto:@user.Email">@owner</a>
</div>
}
}

}

最佳答案

用户服务在服务集合中可用。如果您使用 MVC View 或部分,您可以在服务中找到它。否则,您可以在 ApplicationContext.Current.Services

中找到它

另一种找回它的方法是:

using Umbraco.Core.Services;
using Umbraco.Core.Persistence;
var userService = new UserService(new RepositoryFactory());

当前用户可以在 UmbracoContext.Current.Security.CurrentUser 中找到

更新

要执行 GetAll,您可以在 View 中执行此操作:

@{
var userService = ApplicationContext.Current.Services.UserService;
int totalRecords;
}

@foreach (var user in userService.GetAll(0, 100, out totalRecords))
{
<h1>@(user.Name)</h1>
@user.Username
}

找到的用户数:@totalRecords.ToString()

但是...请记住,服务会访问数据库,如果您想构建具有大量用户的性能良好的网站,请考虑其他解决方案。

关于c# - 在 Umbraco v7.1.4 中获取所有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24680455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com