将AspNetUsers表中的自定义属性添加到.net mvc中的/ Manage / Index

时间:2017-03-03 16:52:57

标签: c# .net model-view-controller

我正在使用.net mvc身份验证,我在AspNetUsers表中添加了一些不同的字段,如First Name。当用户注册到系统中包括输入他们的名字时,它被输入到该表中并且工作正常。

我想要做的是在/ Manage / Index中编辑AspNetUsers中的一些字段(例如,firstname,lastname)。 / Manage / Index使用下面的IndexViewModel。

public class IndexViewModel
{
    public bool HasPassword { get; set; }
    public IList<UserLoginInfo> Logins { get; set; }
    public string PhoneNumber { get; set; }
    public bool TwoFactor { get; set; }
    public bool BrowserRemembered { get; set; }
}

控制器操作是:

public async Task<ActionResult> Index(ManageMessageId? message)
{
    ViewBag.StatusMessage = message == ManageMessageId.ChangePasswordSuccess ? 
    var userId = User.Identity.GetUserId();
    var model = new IndexViewModel
    {
        HasPassword = HasPassword(),
        PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
        TwoFactor = await  UserManager.GetTwoFactorEnabledAsync(userId),
        Logins = await UserManager.GetLoginsAsync(userId),
        BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
    };
    return View(model);
}

我的问题是:

  1. 我应该创建自己的ChangeDetails视图和控制器并更改其中的firstname,lastname等吗?

  2. 管理/索引使用@model IndexViewModel - 我不完全确定如何使用IndexViewModel访问AspNetUser表 - 我想如果userId可用,我可以只查询具有该id的表。

  3. 所有这一切都可以在管理/索引中轻松完成,而且我使其变得更加困难。

  4. 感谢。

1 个答案:

答案 0 :(得分:1)

如果您已将附加属性添加到ApplicationUser中的Models\IdentityModels.cs课程,则可以像这样修改IndexViewModel.cs

public class IndexViewModel
{
    public bool HasPassword { get; set; }
    public IList<UserLoginInfo> Logins { get; set; }
    public string PhoneNumber { get; set; }
    public bool TwoFactor { get; set; }
    public bool BrowserRemembered { get; set; }
    public ApplicationUser CurrentUser { get; set; }
}

然后,在Index的{​​{1}}操作方法中,使用ManageController.cs获取当前用户的ApplicationUser参考:

UserManager