ASP.net core 2.0.1 中 asp.net identity 2.0.1 的基本使用 (三)- 用户注册
一, 修改用户注册
1, 打开 Pages 文件夹 AccountRegister.cshtml, 然后双击 Register.cshtml.cs
找到 public class InputModel, 在这里个类里添加 UserName 属性
[Required]
[StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符, 最多 20 个字符.", MinimumLength = 6)]
[Display(Name = "用户账号")]
[DataType(DataType.Text)]
[RegularExpression("^[a-zA-Z0-9_]{6,20}$", ErrorMessage = "用户名由字母或数字组成.")]
public string UserName { get; set; }
这里说明下, Razor 页面模式跟 mvc 在此出现了严重的不同. 但就代码说没有什么不同几乎完全一样, 但是存放的位置却有了根本的区别. 个人研究分析的结果是: Razor 页面模式其实是把 mvc 中的控制器化整为零了, 即原来控制器中的操作代码被分布放到了各个页面的. cshtml.cs 文件中了. 这样一来由原来 mvc 中文件按类型分类变成了按功能分类, 这样的好处就是每个页面形成了模块化, 这个页面涉及的数据都在这里, 便于维护, 不用控制器, 模型, 视图来回切换了.
2, 修改 public async Task OnPostAsync(string returnUrl = null) 中的 var user = new ApplicationUser {UserName = Input.Email, Email = Input.Email};
改为 var user = new ApplicationUser {UserName = Input.UserName, Email = Input.Email};
因为每个页面只有一个操作了, 所以也就只有这一个 OnPostAsync 方法了.
3, 打开 Pages 文件夹 AccountRegister.cshtml, 在 register_Page 文件中 (其实就是下面的那个文件) 约第 15 行的位置, 添加 "用户账号" 代码:
<div class="form-group">
<label asp-for="Input.UserName"></label>
<input asp-for="Input.UserName" class="form-control" />
<span asp-validation-for="Input.UserName" class="text-danger"></span>
</div>
二, 修改 login. 因为改为了用户名注册, 如果还用 email 登陆的话, 一定出现错误.
1, 打开 Pages 文件夹 Accountlogin.cshtml, 然后双击 Login.cshtml.cs
找到 public class InputModel, 在这里个类里添加 UserName 属性
[Required]
[StringLength(20, ErrorMessage = "{0} 必须至少包含 {2} 个字符, 最多 20 个字符.", MinimumLength = 6)]
[Display(Name = "用户账号")]
[DataType(DataType.Text)]
[RegularExpression("^[a-zA-Z0-9_]{6,20}$", ErrorMessage = "用户名由字母或数字组成.")]
public string UserName { get; set; }
同时要把 email 属性项去掉或者注释掉, 否则你登陆不上去且还不给提示.
2, 修改 public async Task OnPostAsync(string returnUrl = null) 中的 var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);
改为 var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, Input.RememberMe, lockoutOnFailure: true);
3, 打开 Pages 文件夹 AccountLogin.cshtml, 在 Login_Page 文件中 (其实就是下面的那个文件) 约第 16 行的位置, 修改原来为 "Input.Email" 的地方改为 "Input.UserName".
来源: https://www.cnblogs.com/chonghanyu/p/8401741.html