gpt4 book ai didi

c# - 是否可以将必需的 ValidationAttribute 与值类型一起使用?

转载 作者:行者123 更新时间:2023-12-02 11:02:48 24 4
gpt4 key购买 nike

我用以下内容装饰了一个类:

[Required(ErrorMessage = "Price is required.")]
public decimal Price { get; set; }

但是当用代码验证它时:

   for each (PropertyInfo prop in Me.GetType().GetProperties())
{
if (prop.GetIndexParameters().Length = 0)
{
for each (ValidationAttribute validatt in prop.GetCustomAttributes(GetType(ValidationAttribute), True))
{
if (!validatt.IsValid(prop.GetValue(Me, Nothing))
{
retval.Add(New PropertyValidationError(prop.Name, string.Format("There is a problem with the {0} property. It is flagged with the {1}", prop.Name, validatt.GetType.Name), validatt.ErrorMessage));
}
}
}
}

我发现 0 值被视为满足“必需性”,这不是我想要的(事实上,我想允许除 零) - 是我的验证代码做错了事情,还是有办法使用带有 ValidationAttribute 的装饰来获取值类型的默认值?

最佳答案

当您使用值类型(例如十进制)时,不可能没有值。因此,该属性实际上毫无意义。

使用 [Range] 会是一个更好的主意,因为这允许您指定有意义的值。但是,这不允许您处理“任何非零值”(尽管您可以轻松处理任何正非零值)。

如上所述,您的标准需要创建 custom validation attribute进行验证,因为“默认值(T)以外的任何值”不是内置验证。

关于c# - 是否可以将必需的 ValidationAttribute 与值类型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092184/

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