gpt4 book ai didi

asp.net-mvc - 可靠地处理 ASP.NET MVC 模型绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-02 18:33:16 25 4
gpt4 key购买 nike

我正在使用 MVC Controller 开发 REST API。我想处理所有模型绑定(bind)错误并以用户友好的方式将它们报告给客户端。在我的自定义模型绑定(bind)程序中,我已经抛出了一个特殊的异常,异常处理程序认为该异常是安全的并向客户端显示。

但是,当默认模型绑定(bind)器看到无效值(例如 asdf 表示 int)时,它似乎会完全忽略它(如果不需要该参数)或者抛出一个简单的 ArgumentException (如果需要参数)。是否可以可靠地处理这两种情况并获取参数名称和相关错误,而无需手动重写整个绑定(bind)器?

我不想按原样显示ArgumentException,因为它显示了客户端不必关心的方法和命名空间名称。如果可以避免的话,我也不想解析 ArgumentException 消息,并且这无法解决完全忽略非必需参数的无效值的问题。

最佳答案

您可以在模型上实现IValidatableObject 接口(interface)。您可以在其中创建自己的验证逻辑,替换您当前拥有的 Required 属性验证。

public class Model : IValidatableObject {
public int MyIntProperty { get; set; }

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
if (MyIntProperty == 0) {
yield return new ValidationResult("Please provide a valid value for MyIntProperty.", new[] { "MyIntProperty" });
}
}
}

在 Controller 中,您可以检查 ModelState.Errors 集合以查看验证错误。此外,如果您使用强类型 View 和 HTML 表单助手,这将在客户端生成错误 CSS 类。

关于asp.net-mvc - 可靠地处理 ASP.NET MVC 模型绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8163276/

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