【发布时间】:2011-03-24 15:35:16
【问题描述】:
这是我们在 .NET MVC 2 中面临的问题。
我们正在尝试使用 DataAnnotations 为我们处理模型验证,就像它应该做的那样。我们遇到的唯一问题是我们不想要标准错误消息(因为我们的网站上有多种语言)。
我们希望将其本地化,但网站的设置方式是所有文本都来自数据库。因此,我们也希望在数据库中包含错误消息。
所以我们写了一个自定义的RequiredAttribute,像这样:
public class LocalizedRequiredAttribute : RequiredAttribute
{
public string LocalizedErrorMessage
{
get
{
return ErrorMessage;
}
set
{
ErrorMessage = value.Translate();
}
}
}
我们为 String 类编写了一个扩展来添加“Translate()”方法,该方法为正确的本地化版本执行必要的数据库查找。
我们像这样使用我们的属性:
[LocalizedRequired(LocalizedErrorMessage = "Naam is required")]
public string Name {get; set; }
这有效,但只有一次。
如果您首先使用法语访问该网站,您会看到法语错误消息,指出您应该输入一个值。如果您稍后访问英文网站,您仍会在英文页面上看到法语错误。 Setter 似乎只被调用一次。
我们可以做些什么来防止这种行为并在每次运行验证/模型填充值时刷新错误消息?
感谢您能给我的任何帮助。
【问题讨论】:
标签: asp.net-mvc localization data-annotations