我在多文化应用程序中工作,需要在同一视图上以不同的文化格式显示日期和货币。通常我会使用DisplayFormatAttribute
DataFormatString
并让DisplayFor
自动格式化。在这种情况下,这会导致我的所有日期/货币仅在一种文化中显示。
有没有办法将文化信息添加到DisplayFor
?
答案 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; }
}