本地化的ModelMetadata和缓存



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

 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和东西是由框架缓存的。有什么建议如何解决这个问题,并在运行时绑定属性?

我终于找到了一个解决方案。你只需要重写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));
    }
}

最新更新