gpt4 book ai didi

ASP.NET Core 自定义模型绑定(bind)失败时的错误

转载 作者:行者123 更新时间:2023-12-03 16:51:38 24 4
gpt4 key购买 nike

每当将空值或无效值发送到 ASP.NET Core Web API 端点时,我都会尝试应用后端验证,但我不知道如何处理模型绑定(bind)失败错误。

得到这个错误可能来自 ModelState提交无效值时:totalPrice: ["Could not convert string to decimal: . Path 'totalPrice', line 1, position 71."]
0: "Could not convert string to decimal: . Path 'totalPrice', line 1, position 71."
看起来模型绑定(bind)失败并且错误直接显示给客户端。

我有一个非常简单的 Controller ,上面装饰着 ApiController属性。

[ApiController]
public class ProductsController
{
[HttpPost]
public IActionResult Post([FromBody]CreateProductDto model)
{
model.Id = await service.CreateProduct(model);

return CreatedAtRoute(
routeName: "GetProduct",
routeValues: new { id = model.Id },
value: model
);
}
}

和我的 DTO 模型
public class CreateProductDto
{
[Required(ErrorMessage = "Invalid value")]
public decimal totalPrice { get; set;}

public int count { get; set; }
}

有没有办法从模型绑定(bind)错误中自定义文本?我想阻止发送敏感信息并向客户提供友好的反馈?

最佳答案

您可以从 ConfigureServices 方法中的 Startup 类自定义错误消息。可以查看详情Microsoft document .

这是一个例子 -

services.AddMvc(options =>
{
var iStrFactory = services.BuildServiceProvider().GetService<IStringLocalizerFactory>();
var L = iStrFactory.Create("ModelBindingMessages", "WebUI"); // Resource file location
options.ModelBindingMessageProvider.SetValueIsInvalidAccessor((x) => L["The value '{0}' is invalid."]);

options.ModelBindingMessageProvider.SetValueMustBeANumberAccessor((x) => L["The field {0} must be a number."]);
options.ModelBindingMessageProvider.SetMissingBindRequiredValueAccessor((x) => L["A value for the '{0}' property was not provided.", x]);
options.ModelBindingMessageProvider.SetAttemptedValueIsInvalidAccessor((x, y) => L["The value '{0}' is not valid for {1}.", x, y]);
options.ModelBindingMessageProvider.SetMissingKeyOrValueAccessor(() => L["A value is required."]);
options.ModelBindingMessageProvider.SetUnknownValueIsInvalidAccessor((x) => L["The supplied value is invalid for {0}.", x]);
options.ModelBindingMessageProvider.SetValueMustBeANumberAccessor((x) => L["Null value is invalid.", x]);
});

您可以阅读 this博客。

关于ASP.NET Core 自定义模型绑定(bind)失败时的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697300/

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