【问题标题】:How do you get the username of someone who has filled in a form?您如何获得填写表格的人的用户名?
【发布时间】:2020-08-10 16:39:45
【问题描述】:

这一定非常简单,但我显然遗漏了一些东西......

我将身份用于我的用户逻辑。

我称我的模型为“Post”。它有 3 个字符串属性:标题、消息和作者用户名

代码无法运行,但原因很明显:AuthorUsername 返回 null 或空。

这并不奇怪,因为我一直无法弄清楚如何获得发帖人的用户名。

我知道_userManager.GetUserAsync(User),但我不知道把它放在哪里......

我的数据库保存逻辑以“If(!ModelState.IsValid){return View("Index")}”开头,所以我必须在此之前理清获取用户名的逻辑......这意味着在 cshtml 视图中。

我已通过使用带有 Html.Hidden("AuthorUserName", "SuperAdminTest") 的虚拟值确认,一旦设置了该值,一切都会正常工作。

似乎每当我尝试添加代码时,StackOverflow 都会阻止我发布此内容...所以没有可发布的代码。

【问题讨论】:

  • 如果Asp.Net Identity设置正确,可以通过User.Identity.Name获取用户名。

标签: asp.net-mvc asp.net-core asp.net-identity


【解决方案1】:

AuthorUsername 返回 null 或空。

要获取当前 SignedIn 用户的名称,正如 @DavidLiang 在评论中提到的,您可以使用此代码 sn -p User.Identity.Name。以下示例代码供您参考。

@model Post

@inject SignInManager<IdentityUser> SignInManager

@{
    ViewData["Title"] = "CreatePost";
}

<h1>CreatePost</h1>

<h4>Post</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreatePost">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Title" class="control-label"></label>
                <input asp-for="Title" class="form-control" />
                <span asp-validation-for="Title" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Message" class="control-label"></label>
                <input asp-for="Message" class="form-control" />
                <span asp-validation-for="Message" class="text-danger"></span>
            </div>
            @if (SignInManager.IsSignedIn(User))
            {
                @Html.Hidden("AuthorUserName", User.Identity.Name)
            }
            else
            {
                @Html.Hidden("AuthorUserName", "AnonymousUser")
            }
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

测试结果

【讨论】:

  • 这毕竟是显而易见的事情......不敢相信我花了几个小时被困在这样一件小事上。多么尴尬。那好吧。你生活和学习。
猜你喜欢
  • 1970-01-01
  • 2018-03-24
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 2015-09-20
  • 1970-01-01
相关资源
最近更新 更多