Как получить информацию о пользователе из базы данных и отобразить в представлении [приложение MVC 5, Identity User]

Я только начал создавать приложение mvc 5, я использую базу данных пользователей по умолчанию для управления пользовательскими данными, но я добавил еще несколько полей, таких как имя, фамилия, идентификатор электронной почты, в эту базу данных с помощью миграции, теперь мне нужно отобразить все это подробно на странице просмотра (как страница профиля), но я не знаю, как получить данные пользователя Identity из базы данных по умолчанию, я новый разработчик mvc, вы можете мне помочь

мой модельный класс

namespace WebApp.Models
{
    public class ExternalLoginConfirmationViewModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }
    }

    public class ManageUserViewModel
    {
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Current password")]
        public string OldPassword { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "New password")]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm new password")]
        [System.Web.Mvc.CompareAttribute("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

    public class LoginViewModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [Display(Name = "Remember me?")]
        public bool RememberMe { get; set; }
    }

    public class RegisterViewModel
    {

        [Required]
        [Display(Name = "First Name")]
        public string FirstName { get; set; }

        [Required]
        [Display(Name = "Last Name")]
        public string LastName { get; set; }

        [Required]
        [DataType(DataType.EmailAddress)]
        public string EmailID { get; set; }

        public int Score { get; set; }

        [Required]
        [Display(Name = "User name")]
        [Remote("CheckUserNameExists", "Common")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [System.Web.Mvc.CompareAttribute("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }
}

Дбконтексткласс

namespace WebApp.Models
{
    // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
    public class ApplicationUser : IdentityUser
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public int Score { get; set; }
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection")
        {
        }

    }

}


person Basim E-Darussalam    schedule 14.12.2014    source источник
comment
Объект IdentityUser является одноэлементным контекстом БД. Оно должно быть доступно через наше приложение, как и другие поля по умолчанию. Вы проверяли этот факт?   -  person Palak Bhansali    schedule 14.12.2014
comment
Можете ли вы показать мне пример простого контроллера для получения имени текущего пользователя из базы данных?   -  person Basim E-Darussalam    schedule 14.12.2014
comment
Я хотел сказать, что пользовательский контекст должен быть доступен динамически без какой-либо реализации. Если вы можете выровнять шаблонный код mvc по умолчанию, вы увидите, что для полей по умолчанию для пользовательского контекста не написан код. Не могли бы вы проверить эту статью.   -  person Palak Bhansali    schedule 14.12.2014


Ответы (1)


Создайте подробное представление вашего класса из контроллера и позвольте ему создать каркас и вернуть сведения о пользователе в ваше представление. Импортируйте Microsoft.AspNet.Identity, чтобы идентифицировать текущего пользователя и использовать его в своем заявлении linq.

[Authorize()]
ActionResult Details()
{
  var UserId = User.Identity.GetUserId();
  var comp = db.AspNetUsers.Where(i => i.UserName== UserId).First();

  return View(comp);
}

Надеюсь, поможет

person Samuel Moshie    schedule 08.05.2015