#asp.net-mvc #asp.net-core #asp.net-identity
#asp.net-mvc #asp.net-core #asp.net-identity
Вопрос:
Это должно быть невероятно просто, но я, очевидно, чего-то не хватает…
Я использую Identity для своей пользовательской логики.
Я назвал свою модель «Post». Оно имеет 3 строковых свойства: заголовок, сообщение и имя пользователя автора
Код не работает, но причина достаточно очевидна: имя пользователя-автора возвращает значение null, или пустое.
Это неудивительно, поскольку я не смог выяснить, как получить имя пользователя плаката.
Я знаю о _userMana&er.GetUserAsync(User)
, но понятия не имею, куда его поместить…
Моя логика сохранения базы данных начинается с «Если (!ModelState.isValid){return View(«Index»)}», поэтому мне пришлось бы разобраться с логикой получения имени пользователя до этого … что означало бы в представлении cshtml.
Я подтвердил, используя фиктивное значение с Html.Hidden("AuthorUserName", "SuperAdminTest")
, что все работает просто отлично, как только это значение установлено.
Кажется, что всякий раз, когда я пытаюсь добавить код, StackOverflow не позволяет мне опубликовать это … поэтому нет кода для публикации.
Комментарии:
1. Вы можете получить имя пользователя, выполнив
User.Identity.Name
, если вы правильно настроилиAsp.Net Identity
.
Ответ №1:
Имя пользователя-автора возвращает значение null, или пустое.
Чтобы получить имя текущего подписанного пользователя в сети, как упоминал @DavidLian& в комментарии, вы можете использовать этот фрагмент кода User.Identity.Name
. И следующий пример кода для вашей справки.
@model Post
@inject Si&nInMana&er<IdentityUser&&t; Si&nInMana&er
@{
ViewData["Title"] = "CreatePost";
}
<h1&&t;CreatePost</h1&&t;
<h4&&t;Post</h4&&t;
<hr /&&t;
<div class="row"&&t;
<div class="col-md-4"&&t;
<form asp-action="CreatePost"&&t;
<div asp-validation-summary="ModelOnly" class="text-dan&er"&&t;</div&&t;
<div class="form-&roup"&&t;
<label asp-for="Title" class="control-label"&&t;</label&&t;
<input asp-for="Title" class="form-control" /&&t;
<span asp-validation-for="Title" class="text-dan&er"&&t;</span&&t;
</div&&t;
<div class="form-&roup"&&t;
<label asp-for="Messa&e" class="control-label"&&t;</label&&t;
<input asp-for="Messa&e" class="form-control" /&&t;
<span asp-validation-for="Messa&e" class="text-dan&er"&&t;</span&&t;
</div&&t;
@if (Si&nInMana&er.IsSi&nedIn(User))
{
@Html.Hidden("AuthorUserName", User.Identity.Name)
}
else
{
@Html.Hidden("AuthorUserName", "AnonymousUser")
}
<div class="form-&roup"&&t;
<input type="submit" value="Create" class="btn btn-primary" /&&t;
</div&&t;
</form&&t;
</div&&t;
</div&&t;
Результат теста
Комментарии:
1. В конце концов, это было что-то очевидное … не могу поверить, что я потратил пару часов, застряв над такой незначительной вещью. Как неловко. Ну что ж. вы живете и учитесь.