0

Я только начал создавать приложение mvc 5, я использую пользовательскую базу данных по умолчанию для пользователей, но я добавил некоторые больше полей, таких как Имя, Фамилия, Идентификатор электронной почты в эту базу данных, используя миграцию. Теперь мне нужно отобразить эту деталь на странице просмотра (в качестве страницы профиля), но я не знаю, как получить данные пользователя Identity от по умолчанию базы данных, я новый разработчик MVC вы можете мне помочьКак получить данные пользователя из базы данных и отобразить в представлении [MVC 5 application, Identity User]

моя модель класса

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; } 
    } 
} 

DbContextClass

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") 
     { 
     } 

    } 

}

+0

* IdentityUser * объект синглтону контекст дб. Он должен быть доступен через приложение, как и другие поля по умолчанию. Вы проверили этот факт? –

+0

Можете ли вы показать мне простой пример контроллера для получения FirstName текущего пользователя из базы данных –

+0

Что я хотел сказать, пользовательский контекст должен быть доступен динамически без какой-либо реализации. Если вы можете выровнять шаблон шаблона mvc по умолчанию, вы можете увидеть, что для пользовательских контекстов нет кода, написанного для полей по умолчанию. Не могли бы вы проверить [эту статью] (http://www.itorian.com/2013/11/customize-users-profile-in-aspnet.html). –

ответ

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); 
} 

Надеется, что это помогает

Смежные вопросы