gpt4 book ai didi

asp.net-mvc-2 - ASP.NET MVC 2 模型对象验证

转载 作者:行者123 更新时间:2023-12-02 20:01:06 25 4
gpt4 key购买 nike

我正在尝试在 Controller 内的 ModelState 上下文之外验证模型对象,我目前有一个解析器,可以从 Excel 文件创建模型对象,并且我希望能够报告添加了多少条目到数据库以及有多少失败了,有没有办法在模型绑定(bind)之外验证模型对象的数据注释?

我正在寻找类似于 model.valid? 的 Rails 模型方法的东西,或者是我自己实现它的方法。

我当前的解决方案只是手动检查是否存在一些关键字段,但这重复了我的模型类及其元数据之间的要求,必须有一种更好的方法来 Hook 由 mvc 2 完成的模型验证检查。

谢谢

最佳答案

您必须使用 Validator 类,该类可以作为 DataAnnotations 的一部分找到。

User userEntity = new User();

var validationContext = new ValidationContext(userEntity, null, null);
var validationResults = new List<ValidationResult>();
DataAnnotations.Validator.TryValidateObject(userEntity, validationContext, validationResults, true);

如果您的所有实体或应用程序/域模型类都继承自同一个类,您可以将此代码放在父类中或作为扩展方法以保持类干净。

否则,您将使用单例模式来创建特殊的静态验证器。您可以根据自己的喜好使用验证结果。

元数据类

如果您使用元数据类来定义实体的验证规则,则应在验证之前注册元数据类:

TypeDescriptor.AddProviderTransparent(
new AssociatedMetadataTypeTypeDescriptionProvider(
typeof(User),
typeof(UserMetadata)
),
typeof(User)
);

Validator.TryValidateObject(userEntity, context, results, true);

关于asp.net-mvc-2 - ASP.NET MVC 2 模型对象验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648254/

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