c# - 如果值超出类型边界,如何本地化值类型(ushort)属性的默认验证消息?
问题描述
我有一些网络表单,用户应该在其中输入端口号。当然,端口号的最佳类型是 ushort。我使用 RangeAttribute 来验证端口号和一些错误消息。
[Required(ErrorMessage = "The field is required")]
[Display(Name = "Port")]
[Range(1, ushort.MaxValue, ErrorMessage = "Invalid value")]
public ushort Port { get; set; }
只有当我输入 0 到 65535 之间的值时,本地化才能正确工作。所以只有一种不正确的情况 - 零值。但是,如果我尝试保存空值、输入负值或大于 65535 的值,我会完全收到另一条错误消息 ( The value '-1' is not valid for Port.
),而且我不知道如何对其进行本地化。
有人可以帮我吗?
解决方案
“简单”的方法是使用short
(或更大的签名类型)ushort
,模型绑定过程发生在模型验证之后,因此,由于值 -1 与该过程不兼容,ushort
该过程将停在那里,您的自定义错误将永远不会被读取。
困难的方法是编写自己的模型验证器:
推荐阅读
- kubernetes - 用于重新部署的 Terraform ConfigMap 哈希
- url - 从 URL 填写表格 - postget 或如何?
- azure - 使用 Azure 数据工厂 V2 按 LastModifiedDate 复制新的和更改的文件
- php - 如何使用 Axios 将 ReactJs 中的表单提交到 PHP 处理程序(PHP miler 到电子邮件表单数据)?
- java - 正则表达式根据第一次出现的允许分隔符拆分过滤器字符串并获取键、运算符、值
- php - 在 Wordpress 主题中更改“加载更多”按钮的最佳方法是什么?
- swift - 在 Internet 连接可用时将多个存储的数据从已保存的本地数据库发送到服务器 iOS
- r - Radial Svm 特征的非线性变换
- python - 提取三个最大值并将其放在单独的列中
- python-2.7 - 如何为 many2many 字段设置默认值