从准MVC项目模板开始,我已经扩展ApplicationUser.cs
为显示一个新的用户帐户设置,DisplayName
该设置称为(其显示名称,人们将在聊天应用程序中使用该显示名称作为网站的一部分):
public string DisplayName { get; set; }
我修改了准MVC项目模板,以便我可以注册一个新帐户并指定DisplayName,甚至可以在数据库中看到它,所以一切都很好(此过程在此处介绍)。无论如何,我现在面临的问题是我想允许用户更改此设置,因此我扩展了帐户管理页面以显示带有显示此设置的文本字段的HTML部分页面。当他们发布此部分页面时,此操作称为:
// POST: /Account/Manage
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ManagePublicSettings(ManagePublicSettingsViewModel model)
{
ViewBag.ReturnUrl = Url.Action("Manage");
if (ModelState.IsValid)
{
IdentityResult result = await UserManager.ChangeDisplayName(User.Identity.GetUserId(), model.DisplayName);
if (result.Succeeded)
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
return RedirectToAction("Manage", new { Message = ManageMessageId.ChangeAccountSettingsSuccess });
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
ChangeDisplayName
(通过此方法调用)应该是什么样?这是在MVC中扩展帐户管理门户的正确方法吗?我应该ApplicationUserManager
像这样扩展课程吗?我对MVC还是很陌生,只是想把它弄对。
不,您不应该像这样扩展UserManager。这真的很简单。您有以下代码:
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
只需设置用户的DisplayName属性并更新它们:
user.DisplayName = Model.DisplayName;
await UserManager.UpdateAsync(user);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句