您如何获得填写表格的人的用户名?
How do you get the username of someone who has filled in a form?
这一定非常简单,但我显然遗漏了一些东西...
我正在为我的用户逻辑使用身份。
我将我的模型命名为“Post”。它有 3 个字符串属性:标题、消息和作者用户名
代码无法运行,但原因很明显:AuthorUsername return为 null,或为空。
这并不奇怪,因为我一直无法弄清楚如何获取 poster 的用户名。
我知道 _userManager.GetUserAsync(User)
但我不知道该把它放在哪里...
我的数据库保存逻辑以“If(!ModelState.IsValid){returnView("Index")}开头,所以我得整理一下获取用户名的逻辑在那之前...这意味着在 cshtml 视图中。
我已经通过使用带有 Html.Hidden("AuthorUserName", "SuperAdminTest")
的虚拟值确认,一旦设置了该值,一切都会正常工作。
似乎每当我尝试添加代码时,Whosebug 都会阻止我 posting 这个...所以没有代码到 post。
The AuthorUsername is returning null, or empty.
要获取当前登录用户的名称,正如@DavidLiang 在评论中提到的,您可以使用此代码片段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>
测试结果
这一定非常简单,但我显然遗漏了一些东西...
我正在为我的用户逻辑使用身份。
我将我的模型命名为“Post”。它有 3 个字符串属性:标题、消息和作者用户名
代码无法运行,但原因很明显:AuthorUsername return为 null,或为空。
这并不奇怪,因为我一直无法弄清楚如何获取 poster 的用户名。
我知道 _userManager.GetUserAsync(User)
但我不知道该把它放在哪里...
我的数据库保存逻辑以“If(!ModelState.IsValid){returnView("Index")}开头,所以我得整理一下获取用户名的逻辑在那之前...这意味着在 cshtml 视图中。
我已经通过使用带有 Html.Hidden("AuthorUserName", "SuperAdminTest")
的虚拟值确认,一旦设置了该值,一切都会正常工作。
似乎每当我尝试添加代码时,Whosebug 都会阻止我 posting 这个...所以没有代码到 post。
The AuthorUsername is returning null, or empty.
要获取当前登录用户的名称,正如@DavidLiang 在评论中提到的,您可以使用此代码片段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>
测试结果