从数据库访问信息 asp.net mvc 5
Accessing info from database asp.net mvc 5
我添加了如下内容以获取更多用户信息,并更新了数据库,一切正常,但我试图在管理文件夹的索引视图中添加,以便全名、出生日期和国家/地区将显示,但我真的无法让它工作...有人可以指出我正确的方向吗?
账户控制器:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, FullName = model.FullName, Country = model.Country, BirthDate = model.BirthDate };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
帐户视图模型:
public class RegisterViewModel
{
[Required]
[DataType(DataType.Text)]
[Display(Name = "Full Name")]
public string FullName { get; set; }
[Required]
public DateTime BirthDate { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Country")]
public string Country { get; set; }
}
身份模型:
public class ApplicationUser : IdentityUser
{
public string FullName { get; set; }
public string Country { get; set; }
public DateTime BirthDate { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
}
Index.cshtml
<div>
<h4>Change your account settings</h4>
<hr />
<dl class="dl-horizontal">
<dt>Full Name:</dt>
<dd></dd>
<dt>Birth Date:</dt>
<dd></dd>
<dt>Country:</dt>
<dd>
Comming soon
</dd>
<dt>Password:</dt>
<dd>
[
@if (Model.HasPassword)
{
@Html.ActionLink("Change your password", "ChangePassword")
}
else
{
@Html.ActionLink("Create", "SetPassword")
}
]
</dd>
AccountViewModels:
public class SetNameViewModel
{
[Display(Name ="Set Name")]
public string SetName { get; set; }
}
public class SetCountryViewModel
{
[Display(Name = "Set Country")]
public string SetCountry { get; set; }
}
管理控制器:
public async Task<ActionResult> Index(ManageMessageId? message)
{
ViewBag.StatusMessage =
message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
: message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
: message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
: message == ManageMessageId.Error ? "An error has occurred."
: message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
: message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
: "";
var userId = User.Identity.GetUserId();
//ADDED THEESE LINES
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(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);
}
现在如果我使用:
@User.Identity.GetUserId()
在我看来我得到了用户 ID,但我如何获取全名等?
@User.Identity.GetUserName()
returns我id的用户名还有
已添加
ViewBag.CurrentUser = currentUser;
到我的管理控制器,现在我可以通过@Viewbag.CurrentUser.Country、出生日期和全名来查看我想要的东西!是的,现在我想让用户可以选择编辑他们的信息......我想这将是一个更难粉碎的饼干!
添加ViewBag.CurrentUser = currentUser;到为我解决的 ManageController!
我添加了如下内容以获取更多用户信息,并更新了数据库,一切正常,但我试图在管理文件夹的索引视图中添加,以便全名、出生日期和国家/地区将显示,但我真的无法让它工作...有人可以指出我正确的方向吗?
账户控制器:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, FullName = model.FullName, Country = model.Country, BirthDate = model.BirthDate };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
帐户视图模型:
public class RegisterViewModel
{
[Required]
[DataType(DataType.Text)]
[Display(Name = "Full Name")]
public string FullName { get; set; }
[Required]
public DateTime BirthDate { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Country")]
public string Country { get; set; }
}
身份模型:
public class ApplicationUser : IdentityUser
{
public string FullName { get; set; }
public string Country { get; set; }
public DateTime BirthDate { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
}
Index.cshtml
<div>
<h4>Change your account settings</h4>
<hr />
<dl class="dl-horizontal">
<dt>Full Name:</dt>
<dd></dd>
<dt>Birth Date:</dt>
<dd></dd>
<dt>Country:</dt>
<dd>
Comming soon
</dd>
<dt>Password:</dt>
<dd>
[
@if (Model.HasPassword)
{
@Html.ActionLink("Change your password", "ChangePassword")
}
else
{
@Html.ActionLink("Create", "SetPassword")
}
]
</dd>
AccountViewModels:
public class SetNameViewModel
{
[Display(Name ="Set Name")]
public string SetName { get; set; }
}
public class SetCountryViewModel
{
[Display(Name = "Set Country")]
public string SetCountry { get; set; }
}
管理控制器:
public async Task<ActionResult> Index(ManageMessageId? message)
{
ViewBag.StatusMessage =
message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
: message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
: message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
: message == ManageMessageId.Error ? "An error has occurred."
: message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
: message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
: "";
var userId = User.Identity.GetUserId();
//ADDED THEESE LINES
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(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);
}
现在如果我使用:
@User.Identity.GetUserId()
在我看来我得到了用户 ID,但我如何获取全名等?
@User.Identity.GetUserName()
returns我id的用户名还有
已添加
ViewBag.CurrentUser = currentUser;
到我的管理控制器,现在我可以通过@Viewbag.CurrentUser.Country、出生日期和全名来查看我想要的东西!是的,现在我想让用户可以选择编辑他们的信息......我想这将是一个更难粉碎的饼干!
添加ViewBag.CurrentUser = currentUser;到为我解决的 ManageController!