gpt4 book ai didi

c# - 为什么属性在类型转换错误时得到验证?

转载 作者:太空宇宙 更新时间:2023-11-03 15:37:03 24 4
gpt4 key购买 nike

我对 ASP.NET Web API 中的模型验证有疑问。这是一个有问题的模型:

public sealed class AccessTokenRequest
{
[Required]
public Guid GameId { get; set; }

[Required]
public string GameAccessToken { get; set; }

[Range(0, int.MaxValue)]
public int? Lifetime { get; set; }
}

当我为 GameId 传递一个无法转换为 Guid 的字符串时,它会返回两个验证错误。一是:

值 'xxxxxxxxxxxxxxx' 对 GameId 无效。

还有一个是:

该值是必需的。

我只想返回第一个。后者没有意义,因为已经提供了值。

提前致谢。

最佳答案

老实说,我不确定如果不制作自定义验证属性是否可行。

问题是提供无效的 GUID,因为它不能被正确解析,所以它给出了 null 作为结果。 Binder 尝试将 null 分配给具有 [Required] 属性的属性,因此它给出了 The value is required. 错误。

让我们看一下[Required] 属性:

public override bool IsValid(object value)
{
if (value == null)
return false;
string str = value as string;
if (str != null && !this.AllowEmptyStrings)
return str.Trim().Length != 0;
return true;
}

如您所见,检查了 null 值。

您可以从头开始编写新属性,也可以从 RequiredAttribute 派生并覆盖 IsValid 方法。

关于c# - 为什么属性在类型转换错误时得到验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531133/

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