将CultureInfo添加到DisplayFor

时间:2014-06-08 08:15:00

标签: .net asp.net-mvc localization formatting

我在多文化应用程序中工作,需要在同一视图上以不同的文化格式显示日期和货币。通常我会使用DisplayFormatAttribute DataFormatString并让DisplayFor自动格式化。在这种情况下,这会导致我的所有日​​期/货币仅在一种文化中显示。

有没有办法将文化信息添加到DisplayFor

2 个答案:

答案 0 :(得分:0)

正如@StephenMuecke指出的那样,我可以指定显示模板。

我将在模型属性上使用UIHint和相关的显示模板。

答案 1 :(得分:0)

public class LocalizedDisplayFormatAttribute
    : DisplayFormatAttribute, IMetadataAware
{
    private Type LocalizedResourceType { get; set; }
    public string LocalizedDataFormatString { get; set; }
    public string LocalizedNullDisplayText { get; set; }

    public void OnMetadataCreated(ModelMetadata metadata)
    {
        if (LocalizedResourceType != null)
        {
            var resource = new ResourceManager(LocalizedResourceType);

            if (string.IsNullOrEmpty(LocalizedDataFormatString) != true)
            {
                DataFormatString = resource.GetString(LocalizedDataFormatString);
            }

            if (string.IsNullOrEmpty(LocalizedNullDisplayText) != true)
            {
                NullDisplayText = resource.GetString(LocalizedNullDisplayText);
            }
        }
    }
}

用法:

public class YourModel
{
    [LocalizedDisplayFormat(LocalizedDataFormatString = "Resource_Key_Here", LocalizedResourceType = typeof(Resources))]
    public string TestProperty { get; set; }
}