【问题标题】:Get all users in Umbraco v7.1.4获取 Umbraco v7.1.4 中的所有用户
【发布时间】:2014-07-10 15:24:52
【问题描述】:

我正在尝试检索我的 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>
        }    
    }

}

【问题讨论】:

    标签: c# asp.net umbraco umbraco7


    【解决方案1】:

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

    另一种找回方法是:

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

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

    更新

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

    @{
    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()

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

    【讨论】:

    • 感谢您的回复 - 我已经能够找到 UserService 但我正在尝试使用 GetAll() 函数。我不需要当前用户,而是所有用户的列表。
    • 然后执行 userService.GetAll(0,100,out totalRecords),我会相应地编辑我的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多