【问题标题】:Localized ModelMetadata and Caching本地化模型元数据和缓存
【发布时间】:2014-08-24 15:27:20
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 attributes modelmetadata


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      相关资源
      最近更新 更多