0

我的本地化模型属性有问题,因为我们决定不使用内置本地化功能。

 public class LocalizedRequiredAttribute : RequiredAttribute
{
    public LocalizedRequiredAttribute(string displayName)
    {
        DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(LocalizedRequiredAttribute), typeof(RequiredAttributeAdapter));

        ErrorMessage = ResourceProvider.Get(string.Format("resValidation{0}Missing", displayName));
    }
}

问题是全球文化可以由用户更改,但 ErrorMessage、DisplayName 和一些东西是由框架缓存的。有什么建议可以解决这个问题并在运行时绑定属性吗?

4

1 回答 1

2

我终于找到了解决方案。您只需要覆盖 FormatErrorMessage 方法:

 public class LocalizedRequiredAttribute : RequiredAttribute
{
    private readonly string _displayName;

    public LocalizedRequiredAttribute(string displayName)
    {
        DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(LocalizedRequiredAttribute), typeof(RequiredAttributeAdapter));
        _displayName = displayName;
    }

    public override string FormatErrorMessage(string name)
    {
        return Resource.Get(string.Format("resValidation{0}Missing", _displayName));
    }
}
于 2014-08-14T07:29:09.217 回答