c# - 如何从一些由 .NET EmailAddress DataAnnotation 支持的 POST 表单数据中修剪空格

标签 c# .net validation data-annotations

我有一个简单的输入模型,上面有一个 Email 属性。我正在使用 EmailAddress DataAnnotation 来验证输入数据。

[Required]
[Display(Name = "UserReview_CustomerEmailTitle", ResourceType = typeof(Resources.User.Settings))]
[EmailAddress(ErrorMessageResourceType = typeof(Resources.User.Settings), ErrorMessageResourceName = "UserReview_InvalidEmailMessage")]
public string CustomerEmail { get; set; }

如果输入数据之前/之后没有空格,它会完美地工作(即数据有效)。

当我在输入文本的末尾有一个空格时,它无法通过验证。

我是否可以使用任何技巧来修剪传入的输入数据或告诉 EmailAddress 验证器忽略前置/后置空格?

编辑:

我愿意创建自定义属性...我无法从 EmailAddress 属性继承,因为它是 sealed(叹气)..所以也许是正则表达式属性?

最佳答案

当用户跳出电子邮件字段以运行 trim 时,您可以在 javascript 中处理在值上并替换它。 EmailAddress 注释与 unobtrusive validation 配合得很好在客户端(假设这里是 MVC)。

如果您想避免客户端,您可以查看自定义模型绑定(bind)器,您可以在其中操作用于创建待验证模型的数据。您可以查看一些教程 here .

最后但同样重要的是,也许你可以 borrow the regex used within the Email validator并通过新的 RegularExpression validator 让它接受空格并在您的代码中显式处理 TRIM。

关于c# - 如何从一些由 .NET EmailAddress DataAnnotation 支持的 POST 表单数据中修剪空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36880371/

相关文章:

c# - .NET GC 删除正在使用的对象

C# IL 代码修改 - 保持堆栈完整

c# - 以 Xamarin 形式提供隔离进程的后台服务

c# - 从网络服务器使用 MySQL 的 Windows 应用程序

c# - 如何删除应用于类属性的程序集?

.net - 为什么创建一个新线程比让它们保持空闲更昂贵?

c# - AutoMapper - 条件映射

node.js - 错误: It is not secure to become a user on a node. js服务器环境

php - W3C 兼容的 HTMl 和 CSS

javascript - 验证其他字段后创建 strip 支付 token