gpt4 book ai didi

c# - 应用层数格式asp.net mvc

转载 作者:行者123 更新时间:2023-11-30 17:59:48 26 4
gpt4 key购买 nike

在我的应用程序中,我有很多属性,例如

    [DisplayFormat(ApplyFormatInEditMode=false,ConvertEmptyStringToNull=false,DataFormatString="{0:0.00}")]
public decimal somedecimalvalue { get; set; }

每当在上面应用格式创建小数属性时,有什么方法可以概括这一点

最佳答案

您可以通过创建自定义 DataAnnotationsModelMetadataProvider 为模型中的 decimal 属性手动分配元数据:

public class DecimalMetadataProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);

if (propertyName == null)
return metadata;

if (metadata.ModelType == typeof(decimal))
{
// Given DisplayFormat Attribute:

// if ApplyFormatInEditMode = true
// metadata.EditFormatString = "{0:0.00}";

// for DataFormatString
metadata.DisplayFormatString = "{0:0.00}";

// for ConvertEmptyStringToNull
metadata.ConvertEmptyStringToNull = false;
}

return metadata;
}
}

然后在 Global.asax.cs 中的 Application_Start() 方法中注册此提供程序:

ModelMetadataProviders.Current = new DecimalMetadataProvider();

然后您可以从 decimal 属性中删除 DisplayFormat 属性。请注意,这不会影响其他属性,您可以安全地在 decimal 属性上添加其他数据注释。

阅读更多关于 MetaData 的信息类及其属性。

编码愉快! :)

关于c# - 应用层数格式asp.net mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com