【发布时间】:2022-01-27 07:06:58
【问题描述】:
我正在使用 Angular 在 .Net6 中准备 WebAPI。 当我准备注册页面时,我将电子邮件设置为唯一的(它是用户名凭据)。现在,我想表明,当用户尝试使用已接收的电子邮件进行注册时,电子邮件并不是唯一的。 DB中的电子邮件列设置为唯一,但我不知道如何在前端处理来自后端的错误。不知何故,用户必须知道他在注册期间做错了什么。 当我可以在数据库中找到提供的电子邮件时,我会抛出异常。也许我应该以另一种方式做到这一点?给点提示:) 报名方式
public void RegisterUser(UserRegister dto)
{
var newUser = new User()
{
Email = dto.Email,
RoleId = dto.RoleId,
FirstName = dto.FirstName,
LastName = dto.LastName,
DateOfBirth = dto.DateOfBirth,
Nationality = dto.Nationality,
};
if(_dataContext.Users.Where(m => m.Email == newUser.Email).Any())
{
throw new BadRequestException("Email exists");
}
var hashedPassword = _passwordHasher.HashPassword(newUser, dto.Password);
newUser.PasswordHash = hashedPassword;
_dataContext.Users.Add(newUser);
_dataContext.SaveChanges();
}
负责注册的组件
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { Form, NgForm } from '@angular/forms';
import { Router } from '@angular/router';
import { User } from '../models/user';
import { UserService } from '../services/user.service';
@Component({
selector: 'app-register',
templateUrl: './register.component.html',
styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
constructor(private http: HttpClient,
private userService: UserService,
private router: Router) { }
userRegisteredSuccessfully : boolean = false;
public countries:any = countries
ngOnInit(): void {
this.userRegisteredSuccessfully = false
}
onSubmit(f: NgForm){
this.userService.registerUser(f.value).subscribe(
res =>{
var showRegisteredSuccess = document.getElementById('register-success-alert');
if (showRegisteredSuccess) {
showRegisteredSuccess.style.display = "block";
}
setTimeout(function () {
if (showRegisteredSuccess) {
showRegisteredSuccess.style.display = "none";
}
}, 4000);
},
err => {
//What do do here ?
}
);
}
}
【问题讨论】:
标签: .net angular exception error-handling