创建新的角色提供者时如何停止此错误?
How do I stop this error when creating a new Role Provider?
我正在尝试将一个新的角色提供者添加到我的 MVC5 项目中 - 但是在 "return roles.ToArray();" 行我收到错误:
Cannot implicitly convert type 'wb.Models.UserRole[]' to 'string[]'
public override string[] GetRolesForUser(string username)
{
var roles = db.UserRole
.Where(x => x.UserName
.Equals(username, StringComparison.CurrentCultureIgnoreCase));
if (roles != null)
return roles.ToArray();
else
return new string[] { }; ;
}
谁能建议我如何更正这个问题?
您正在 return 一组角色,而不是角色名称。 Select 输出名称并将它们 return 作为一个数组。
public override string[] GetRolesForUser(string username)
{
var roleNames =
db.UserRole
.Where(x => x.UserName.Equals(username,
StringComparison.CurrentCultureIgnoreCase))
.Select(x => x.RoleName);
if (roleNames.Count() > 0)
return roleNames.ToArray();
else
return new string[] { }; ;
}
您的代码中的问题在以下行中:
roles.ToArray();
这个 returns 一个 wb.Models.UserRole
的数组而不是一个 string[]
的字符串数组。我看到的一个选项是,在调用 ToArray()
到 select 一个带有一个字符串 属性 的匿名类型之前,它将包含您想要的信息。像这样:
var roles = db.UserRole
.Where(x => x.UserName
.Equals(username, StringComparison.CurrentCultureIgnoreCase))
.Select(x => x.RoleName);
我不确定您的 class 是否有一个名为 RoleName
的 属性,但一般来说,您应该像上面那样将查询结果投射到字符串序列中.然后调用 ToArray
将创建一个字符串数组,您将完成更多工作。
我正在尝试将一个新的角色提供者添加到我的 MVC5 项目中 - 但是在 "return roles.ToArray();" 行我收到错误:
Cannot implicitly convert type 'wb.Models.UserRole[]' to 'string[]'
public override string[] GetRolesForUser(string username)
{
var roles = db.UserRole
.Where(x => x.UserName
.Equals(username, StringComparison.CurrentCultureIgnoreCase));
if (roles != null)
return roles.ToArray();
else
return new string[] { }; ;
}
谁能建议我如何更正这个问题?
您正在 return 一组角色,而不是角色名称。 Select 输出名称并将它们 return 作为一个数组。
public override string[] GetRolesForUser(string username)
{
var roleNames =
db.UserRole
.Where(x => x.UserName.Equals(username,
StringComparison.CurrentCultureIgnoreCase))
.Select(x => x.RoleName);
if (roleNames.Count() > 0)
return roleNames.ToArray();
else
return new string[] { }; ;
}
您的代码中的问题在以下行中:
roles.ToArray();
这个 returns 一个 wb.Models.UserRole
的数组而不是一个 string[]
的字符串数组。我看到的一个选项是,在调用 ToArray()
到 select 一个带有一个字符串 属性 的匿名类型之前,它将包含您想要的信息。像这样:
var roles = db.UserRole
.Where(x => x.UserName
.Equals(username, StringComparison.CurrentCultureIgnoreCase))
.Select(x => x.RoleName);
我不确定您的 class 是否有一个名为 RoleName
的 属性,但一般来说,您应该像上面那样将查询结果投射到字符串序列中.然后调用 ToArray
将创建一个字符串数组,您将完成更多工作。