【问题标题】:Data Member Validation - ISO 4217 (currency) and 639-1 (language)数据成员验证 - ISO 4217(货币)和 639-1(语言)
【发布时间】:2013-04-19 16:18:40
【问题描述】:

因此,我希望对我目前正在处理的 .NET 项目中的某些模型进行一些自定义数据字段验证。

这些涉及默认语言和默认货币。为了满足此应用程序和所涉及的各种其他应用程序和服务的标准,货币需要是 ISO 4217(3 字符货币)标准,语言需要是 ISO 639-1(2 字符语言)。

看到目前还没有为这个任何地方进行模型验证,我很高兴能设置它,在我开始制作一些巨大的自定义数据验证器之前,我想知道是否有人知道任何易于提供这些标准的现有库,即使它类似于检查我可以自己插入数据验证器的字符串。

任何意见和/或建议将不胜感激。

【问题讨论】:

    标签: c# .net iso model-validation


    【解决方案1】:

    好的,所以我找到了一个可行的解决方案。这有点不雅,但很有效。

    可以在 System.Globalization 命名空间中 RegionInfo 对象的 TwoLetterISORegionName 属性中找到 ISO 639-1(2 字符语言)代码。

    ISO 4217(3 个字符的货币)代码可以在同一对象的 ISOCurrnySymbol 属性中找到。

    要创建区域信息,请使用:

    new RegionInfo(Int32)
    

    int 是文化标识符

    要生成文化标识符列表,使用起来非常简单

    System.Globalization.CultureInfo.GetCultures(CULTURETYPE)
    

    其中 CULTURETYPE 是枚举或各种文化类型的相应编号(请务必选择不包含中性文化的一种,因为这些文化无法正确映射)。这将返回一个 CultureInfo 对象数组,每个对象都包含一个 LCID 属性。该属性可用于构造相应的 RegionInfo,您可以从那里获取所需的内容。

    【讨论】:

      【解决方案2】:

      我自己也遇到过同样的问题,我认为通过我找到的这些来源也可以解决您的问题。

      此来源教我们如何查找与 ISO 4217 格式的货币代码关联的 CultureInfo 对象。

      http://eddietech.blogspot.com.es/2008/01/find-cultureinfo-by-iso-currency-code.html

      对于这些对象中的每一个(可以有多个文化使用相同的货币代码),您可以读取相关 ISO 639-1 格式语言代码的 TwoLetterISOLanguageName 属性。

      您还可以阅读每个 CultureInfo 对象的 Name 属性,您可以在其中找到该文化的“(ISO 639-1)-(ISO 3166)”(每个代码长度为 2 个字母)(例如:“es-ES "、"en-GB" 等)。

      可以在 here 找到另一个在 C# 中涵盖此主题的重要资源。

      【讨论】:

        【解决方案3】:

        由 Kira Namida 的回答开始:

        撒上一点 Linq,这将是系统上已知的所有已知 ISO 4217 字符的列表:

        using System.Globalization;
        using System.Linq;
        
        IEnumerable<string> currencySymbols = CultureInfo.GetCultures(CultureTypes.SpecificCultures) //Only specific cultures contain region information
            .Select(x => (new RegionInfo(x.LCID)).ISOCurrencySymbol)
            .Distinct()
            .OrderBy(x=>x)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-31
          • 1970-01-01
          • 2014-06-14
          • 2011-05-16
          • 2012-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多