【问题标题】:Accessing UserID out of SQL Database in ASP.Net Core在 ASP.Net Core 中从 SQL 数据库中访问 UserID
【发布时间】:2021-02-08 11:34:20
【问题描述】:

我有一个数据库,其中存储了一些用户。如果用户登录,我想在单击按钮时读出用户 ID 并显示它。这是我目前所拥有的:

@page "/UserId"

@using Microsoft.AspNetCore.Identity;
@inject UserManager<IdentityUser> userManager
@using Microsoft.AspNetCore.Http
@inject IHttpContextAccessor _HttpContext

<div>
    @UserID;
</div>

<button class="btn btn-getstarted" @onclick="UsersID">Get UserID</button>


@code {


    private UserManager<IdentityUser> _userManager;
    private string UserID;

    private string UsersID()
    {
        GetId(userManager);
        return UserID;
    }

    public async void GetId(UserManager<IdentityUser> userManager)
    {
        _userManager = userManager;
        var user = await _userManager.GetUserAsync(_HttpContext.HttpContext.User);
        UserID = user.Id;
    }

}

它以某种方式向我抛出了错误 CS1503 Argument 2: cannot convert from 'method group' to 'EventCallback' 我不明白。我也知道在这种情况下它不是调用其他函数的最佳方法,但它似乎效果最好?有没有更好的方法来获取当前User的ID并显示出来?

我提到了this link here,但它对我不起作用。有什么建议可以做吗?

【问题讨论】:

  • stackoverflow.com/questions/52351876/…这个链接可能有帮助
  • @onclick="UsersID" 请解释一下这段代码要做什么。
  • Razor 组件不支持 SignInManager 和 UserManager。 IHttpContextAccessor(Razor 组件不支持 HttpContext>。
  • @mjwills 的目标是获取用户 ID,如果此按钮将被单击。我尝试了使用@onclick="UsersID" 和字符串函数的解决方法,但它没有用。如果我插入@onclick="GetId",错误将是相同的。
  • 从这个开始:chrissainty.com/… 执行提供的代码,然后回来提问。实际上,如果你想学习 Blazor,你应该在接下来的几个月里把 @chrissinty 的网站作为你的家,然后来这里提问。您也可以使用 blazor-university 网站。

标签: c# asp.net-core blazor


【解决方案1】:

@onclick 期待看到一个 mouseclick 事件处理程序——类似于

    private void Click(MouseEventArgs mouseEventArgs)

解决方案是制作用户 ID 和事件处理程序(又名 eventcallback):

private void UsersID(MouseEventArgs mouseEventArgs)
{
        GetId(userManager);
}

或者使用 lambda 表达式 - (e) 接收点击事件(它是 onclick 传递的 MouseEventArgs 对象)并调用您的方法:

 @onclick="(e) => UsersID()"
    private void UsersID()
    {
        GetId(userManager);
        // Not needed - return UserID;
    }

请注意,您不需要返回任何内容,您已经在 GetID 中设置了 UserID,并且鼠标事件会引发 UI 渲染事件。

Blazor 一路顺风

您寻求帮助和信息的第一站应该是Microsoft Documents site

【讨论】:

    猜你喜欢
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多