【发布时间】:2013-07-16 07:16:20
【问题描述】:
我在 MVC4 中工作,想使用 Uppercase 属性定义模型。想法是,Uppercase 属性的存在会导致模型值在到达服务器时转换为大写。
目前我在模型中有以下代码:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode, Uppercase=true)]
public string Account
{
get { return _account; }
set
{
if (value != null)
_account = value.ToUpper();
}
}
但我真正想要的是:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode)]
[Uppercase]
public string Account { get; set; }
我认为我可能需要将大写属性创建为ValidationAttribute,以确保在模型访问服务器时触发它。但这似乎有点错误,因为我并没有真正验证数据。有没有更好的办法?
另外,有什么方法可以保证属性的调用顺序?我真的想在自定义 StringValidation 属性触发之前将数据转换为大写,因为这会检查正则表达式模式中文本的大小写。
要为此添加一点背景,我想减少添加代码以大写数据的需要。必杀技将是一个单一属性,它在模型绑定或验证阶段更新进入服务器的数据。然后可以在 StringValidation 属性中引用此属性,以修改其检查中使用的 RegEx 值。然后,我还可以在自定义的 TextBoxFor 辅助方法中查找此属性,这样我就可以添加 text-transform: uppercase,使其在客户端看起来正确。
有人有什么想法吗?
【问题讨论】:
标签: asp.net-mvc custom-attributes data-annotations