我正在使用.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);
}
我的问题是:
我应该创建自己的ChangeDetails视图和控制器并更改其中的firstname,lastname等吗?
管理/索引使用@model IndexViewModel - 我不完全确定如何使用IndexViewModel访问AspNetUser表 - 我想如果userId可用,我可以只查询具有该id的表。
所有这一切都可以在管理/索引中轻松完成,而且我使其变得更加困难。
感谢。
答案 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