내가 열거 형의 국제화 또는 각각의 리소스 파일에서 열거 형의 점점 텍스트에 발견 된 접근 방식하여 GetString 및 GetStrings에 대한 확장 방법을 제공합니다 다른 정적 클래스를 만듭니다 DescriptionAttribute 클래스
public class EnumResourceAttribute : DescriptionAttribute
{
public Type ResourceType { get; private set; }
public string ResourceName { get; private set; }
public int SortOrder { get; private set; }
public EnumResourceAttribute(Type ResourceType,
string ResourceName,
int SortOrder)
{
this.ResourceType = ResourceType;
this.ResourceName = ResourceName;
this.SortOrder = SortOrder;
}
}
를 상속하여 속성 클래스를 만드는 것입니다.
public enum Priority
{
[EnumResourceAttribute(typeof(Resources.AdviceModule), Resources.ResourceNames.AdviceCreateAdviceExternaPriorityMemberHigh, 1)]
High,
[EnumResourceAttribute(typeof(Resources.AdviceModule), Resources.ResourceNames.AdviceCreateAdviceExternaPriorityMemberRoutine, 2)]
Routine
}
어디 Resources.ResourceNames.AdviceCreateAdviceExternaPriorityMemberHigh
& Resources.ResourceNames.AdviceCreateAdviceExternaPriorityMemberRoutine
리소스 파일에서 상수 또는 당신은 그 값이 문자열이 다른 문화에서 사용할 수 있습니다 말할 수 있습니다 :
public static class EnumHelper
{
public static string GetString(this Enum value)
{
EnumResourceAttribute ea =
(EnumResourceAttribute)value.GetType().GetField(value.ToString())
.GetCustomAttributes(typeof(EnumResourceAttribute), false)
.FirstOrDefault();
if (ea != null)
{
PropertyInfo pi = ea.ResourceType
.GetProperty(CommonConstants.ResourceManager);
if (pi != null)
{
ResourceManager rm = (ResourceManager)pi
.GetValue(null, null);
return rm.GetString(ea.ResourceName);
}
}
return string.Empty;
}
public static IList GetStrings(this Type enumType)
{
List<string> stringList = new List<string>();
FieldInfo[] fiArray = enumType.GetFields();
foreach (FieldInfo fi in fiArray)
{
EnumResourceAttribute ea =
(EnumResourceAttribute)fi
.GetCustomAttributes(typeof(EnumResourceAttribute), false)
.FirstOrDefault();
if (ea != null)
{
PropertyInfo pi = ea.ResourceType
.GetProperty(CommonConstants.ResourceManager);
if (pi != null)
{
ResourceManager rm = (ResourceManager)pi
.GetValue(null, null);
stringList.Add(rm.GetString(ea.ResourceName));
}
}
}
return stringList.ToList();
}
}
그리고 당신의 열거의 요소에
당신은 쓸 수 있습니다 .
당신이 다음 속성
private IList result;
public IList Result
{
get
{
result = typeof(Priority).GetStrings();
return result;
}
}
하고 .cshtml
파일에 방금처럼 드롭 다운리스트에 열거를 바인딩 할 수 있습니다 만들 MVC 아키텍처에서 웹 응용 프로그램을 구현하는 경우 :
@Html.DropDownListFor(model => Model.vwClinicalInfo.Priority, new SelectList(Model.Result))
좋아요, url이 국제화의 요점을 자세히 설명하는 것 같습니다. 정말 고맙습니다.! sebasitan. –
@Malcom_Frexner하지만 글로벌 asax에서 유일한 경로를 사용하고 있습니까? –