【发布时间】:2021-08-27 00:29:10
【问题描述】:
我现在正在研究 ASP.NET Core。
我正在构建 Restful API,并编写了以下代码用于模型验证。
public class CreditCard
{
[Required(ErrorMessage = "Error!")]
[Range(1, 32, ErrorMessage = "Error")]
public int Paydate { get; set; }
}
当用户调用 API 时,Paydate 必须有一个数字,但有时它没有。
如果用户调用 API 并像这样抛出数据, {"paydate":""}
会发生这些错误。 'JSON 值无法转换为 System.Int32'
可以在ErrorMessage中显示指定的内容,即使是空字符串吗?
【问题讨论】:
-
请展示你的控制器实现
-
"Error!"不是有用的错误消息。为什么不将ErrorMessage属性留空,以便 ASP.NET 自动生成更有用的错误消息? -
"Paydate 必须有数字,但有时没有。"所以你的意思是它接受
null或其他类型。如果接受Nullable,则不应应用RequiredAttribute并将Paydate设置为int?类型。错误消息是正确的,因为您的模型预计会收到int类型的Paydate。如果需要接受string,也许你应该修改你的Paydate类型。 -
使用int?可以防止Null,有时调用API时传值为"",我想显示我在ErrorMessage中设置的消息,而不是自动生成的消息.
-
在 .Net Framework(使用 Newtonsoft.JSON)中,我将使用
int? Paydate使其可为空,然后包含[Required]属性。但是,.Net Core 默认使用 System.Text.Json。您可以考虑使用这种方法尝试 Newtonsoft.Json,但这是我目前唯一能想到的。
标签: c# asp.net-core