• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#Enum类型的本地化

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
枚举类型本地化操作的简单方案,并应用到Asp.net MVC的DropdownList中。 

/// <summary>
    
/// Enum Localizable. default resouce key={Prefix}_{Enum}
    
/// If you ignore Prefix,will return {EnumTypeName}_{Enum} format
    
/// </summary>
    [AttributeUsage(AttributeTargets.Enum, AllowMultiple = true, Inherited = true)]
    
public class LocalizableAttribute : Attribute
    {
        
public LocalizableAttribute(Type language)
        {
            
this.LanguageType = language;
        }
        
public LocalizableAttribute(Type language, String prefix)
            :
this(language)
        {
            Prefix 
= prefix;
        }

        
public Type LanguageType
        {
            
get;
            
set;
        }
        
public string Prefix
        {
            
get;
            
set;
        }
    }
    
public static class EnumerableExtension
    {
        
public static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action)
        {
            
foreach (T item in enumerable)
            {
                action(item);
            }
        }

        
public static string ToLocalizable(this Enum value)
        {
            LocalizableAttribute customAttr
=(LocalizableAttribute) Attribute.GetCustomAttribute(value.GetType(), typeof(LocalizableAttribute));
            ResourceManager _resources 
= new ResourceManager(customAttr.LanguageType);
            var prefix
=customAttr.Prefix;
            
if (string.IsNullOrEmpty(prefix))
            {
                prefix
=value.GetType().Name;
            }

            
string rk = String.Format("{0}_{1}",prefix,value);
            
string localiza=_resources.GetString(rk);
            
if (localiza == null)
            {
                
return value.ToString();
            }
            
return localiza;
        }

        
public static IEnumerable<SelectListItem> ToSelectList(this Enum enumValue)
        {
            
return from Enum e in Enum.GetValues(enumValue.GetType())
                   select 
new SelectListItem { Selected = e.Equals(enumValue), Text = EnumerableExtension.ToLocalizable(e), Value = e.ToString() };
        }
    }
使用:
[Localizable(typeof(CoreLanguage),"UesrTitle")] 
    
public enum UserTitle
    {
        Mr,
        Miss
    }


//in view
@Html.DropDownListFor(m => m.UserTitle, Model.UserTitle.ToSelectList(), new { id = "UserTitle" })

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap