gpt4 book ai didi

c# - 将 ASP.NET Core WEB API ModelState 错误放入 Angular 6 中的数组

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:12 26 4
gpt4 key购买 nike

我的应用程序中有一个寄存器模型,如下所示:

public class UserRegisterDTO
{
public int Id { get; set; }
[Required]
public string Username { get; set; }
[Required]
[StringLength(12, MinimumLength = 8, ErrorMessage = "You must specify password between 8 and 12 chars.")]
public string Password { get; set; }
}

然后我像这样通过 angular 6 向服务器发送注册请求:

  register() {
this.authService.register(this.model).subscribe(() => {
this.alertify.success('Registration successful');
}, error => {
console.log(error);
this.alertify.error(error);
});
}

当我向服务器发布错误模型时,ModelValidation 工作正常并返回 ModelState 错误,但是 console.log(error) 显示如下对象:

{Password: Array(1), Username: Array(1)}
Password: ["You must specify password between 8 and 12 chars."]
Username: ["The Username field is required."]
__proto__:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ ()
valueOf: ƒ valueOf()
__defineGetter__: ƒ __defineGetter__()
__defineSetter__: ƒ __defineSetter__()
__lookupGetter__: ƒ __lookupGetter__()
__lookupSetter__: ƒ __lookupSetter__()
get __proto__: ƒ __proto__()
set __proto__: ƒ __proto__()

我想将错误消息放入一个字符串数组中。我尝试了 JOSN.stringify(error) 但它没有解决我的问题。

你能帮帮我吗?

最佳答案

您可以轻松编写一个函数,将模型错误对象转换为您想要的形式。如果我正确理解了您的要求,那么下面的函数应该可以解决问题。

transformError(err: { [key:string]: any }) {
const messages: string[] = [];

if (err) {
for (let key of err) {
for (let message of err[key]) {
messages.push(`${key}: ${message}`);
}
}
}

return messages;
}

register() {
this.authService.register(this.model).subscribe(() => {
this.alertify.success('Registration successful');
}, error => {
const messages = this.transformError(error);
this.alertify.error(messages);
});
}

关于c# - 将 ASP.NET Core WEB API ModelState 错误放入 Angular 6 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com