我有这个 httpcontext 声明,我想在我的 View 中使用它来显示当前用户的用户名。到目前为止,我是这样做的:
<p>@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")</p>
但是,结果是这样的:
UserName: user@email.com
我错过了什么吗?我试着这样做:
@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName").Select(c => c.Value).SingleOrDefault()
但它不允许我在 SingleOrDefault 之后使用 Select。
最佳答案
SingleOrDefault()
返回与条件匹配的单个元素,而不是另一个 IQueryable
或 IEnumerable
集合,后者稍后可以被 Select
编辑。
Returns a single, specific element of a sequence, or a default value if that element is not found.
你应该使用 Where()
在使用 Select()
之前返回一个集合:
@Context.User.Claims.Where(u => u.Type == "UserName").Select(c => c.Value).SingleOrDefault()
对于 C# 6.0 及以上版本,使用 null 条件运算符获取其值:
@Context.User.Claims.SingleOrDefault(u => u.Type == "UserName")?.Value
关于c# - ASP.NET Core 2.1 在 View 中使用 HttpContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53312009/