微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 获取Umbraco v7.1.4中的所有用户

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

}

解决方法

用户服务在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()

但是……记住服务将打到数据库,如果你想建立性能良好的网站,有很多用户,请考虑另一种解决方案.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐