C# 强制ASP.NET MVC3和Entity Framework 4属性并将其转换为大写

C# 强制ASP.NET MVC3和Entity Framework 4属性并将其转换为大写,c#,asp.net-mvc,asp.net-mvc-3,entity-framework,validation,C#,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Validation,我有一个数据库字段(邮政编码),我想包含大写字符、空格和数字。没有小写或其他标点符号。我希望尽可能以声明的方式来处理这个问题。一种方法是使用正则表达式DataAnnotation来验证,[a-Z][0-9]\w(或类似的方法-我不是正则表达式专家,但我确信可以找到正确的正则表达式)。这将完成我想要的一半——它将强制用户输入大写,但不会转换为大写 若我想转换成大写,在堆栈溢出问题中有一些解决方案,但它们都不是特别声明性的。目前,我正在考虑将验证和jQuery结合起来,以发现任何具有“upperca

我有一个数据库字段(邮政编码),我想包含大写字符、空格和数字。没有小写或其他标点符号。我希望尽可能以声明的方式来处理这个问题。一种方法是使用正则表达式DataAnnotation来验证,
[a-Z][0-9]\w
(或类似的方法-我不是正则表达式专家,但我确信可以找到正确的正则表达式)。这将完成我想要的一半——它将强制用户输入大写,但不会转换为大写

若我想转换成大写,在堆栈溢出问题中有一些解决方案,但它们都不是特别声明性的。目前,我正在考虑将验证和jQuery结合起来,以发现任何具有“uppercaseonly”类的内容并转换数据,但这有点混乱


我遗漏了什么吗?

CSS文本转换:大写

更新:


尝试实现自定义ModelBinder。下面是一个例子:


只需将属性设置为大写,而不是
AddRoles
。无需触摸EF类。

为什么不更改setter以将收到的值存储为大写

因此,在类对象中,不要使用速记属性
{get;set;}
更改为

get { return this.property; }

set { this.property = value.ToUpper(); }

这不是只是用大写字母显示字符,而不是将其改为大写吗?在这种情况下,我会将混合案例存储在后台数据库、报表等中?请尝试实现自定义ModelBinder。遗憾的是,因为它的EF4(不是POCO)对象,否则这将是完美的!