Himanshu.A.Joshi Ответов: 1

Как отобразить текущие данные вошедших в систему пользователей


я добавил некоторые поля в таблицу aspnetusers, такие как firstname lastname

вот мой контроллер

public ActionResult profile(string id)
        {
            var user = db.Users.Single(u => u.UserName == id);
            return View(user);

        }


и мой взгляд:-
@model MVCProfile.Models.ApplicationUser

@{
    ViewBag.Title = "profile";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Users Profile</h2>


Firstname:@Model.FirstName<br/>
Lastname:@Model.LastName<br/>
email:@Model.Email<br/>
City:@Model.City<br/>


Что я уже пробовал:

я получаю следующую ошибку при загрузке страницы
Sequence contains no elements

An exception of type 'System.InvalidOperationException' occurred in System.Core.dll but was not handled in user code


как отобразить текущую запись вошедшего пользователя я много искал в google но есть только на примере который отображает только userid

F-ES Sitecore

ВАР пользователя = дБ.Пользователей.Один(у =&ГТ; у.Имя пользователя == ИД);

Ваш "сингл", вероятно, ничего не возвращает, потому что нет имени пользователя, которое соответствовало бы"id". Использование Single, как правило, плохая идея, используйте SingleOrDefault, чтобы вы могли справиться, когда нет совпадающих данных.

Himanshu.A.Joshi

после использования singleordefault вместо single я получаю ошибку в поле зрения здесь Firstname:@Model.FirstName, ссылка на который не установлена на экземпляр объекта.

Richard Deeming

Потому что нет UserName это соответствует указанному идентификатору.

Single будет выброшено исключение; SingleOrDefault будет возвращать null Вам нужно проверить, является ли это значение null прежде чем показать его.

var user = db.Users.SingleOrDefault(u => u.UserName == id);
if (user == null) return View("UserNotFound");
return View(user);

Himanshu.A.Joshi

он показывает мне, что пользователь равен нулю, что делать

Richard Deeming

Ты хоть читал мой комментарий?!

Есть НЕТ сопоставление пользователей в вашей базе данных. Так Single выбросит исключение, и SingleOrDefault будет возвращать null.

Если SingleOrDefault возвращается null, то вместо этого вам нужно отобразить представление "не найдено".

Как я уже говорил час назад.

Himanshu.A.Joshi

да, я сделал то, что вы сказали singleordefault возвращает null, и он отображает мне мое не найденное представление, но я спрашиваю вас, как отобразить сведения о вошедшем в систему пользователе

1 Ответов

Рейтинг:
2

Himanshu.A.Joshi

я сделал это сам и как я уже сказал в google нет такого решения для отображения всех подробностей текущих вошедших в систему пользователей

вот как я это сделал

контроллер :-


public ActionResult profile(ApplicationUser a)
      {
          var currentUserId = User.Identity.GetUserId();
          var uinfo = db.Users.FirstOrDefault(d => d.Id == currentUserId);

          if(uinfo!= null)
          {
              return View(uinfo);
          }
          return View("notfound");
      }



и посмотреть:-

@model MVCProfile.Models.ApplicationUser

@{
    ViewBag.Title = "profile";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Users Profile</h2>
Firstname:@Model.FirstName<br/>
Lastname:@Model.LastName<br/>
email:@Model.Email<br/>
City:@Model.City<br/>


это будет полезно для других