在我的应用程序中,我有许多属性,例如
[DisplayFormat(ApplyFormatInEditMode=false,ConvertEmptyStringToNull=false,DataFormatString="{0:0.00}")]
public decimal somedecimalvalue { get; set; }
有没有什么方法可以概括这一点,只要在上面创建了一个十进制属性,格式就适用于它
在我的应用程序中,我有许多属性,例如
[DisplayFormat(ApplyFormatInEditMode=false,ConvertEmptyStringToNull=false,DataFormatString="{0:0.00}")]
public decimal somedecimalvalue { get; set; }
有没有什么方法可以概括这一点,只要在上面创建了一个十进制属性,格式就适用于它
您可以通过创建自定义为模型中的小数属性手动分配元数据DataAnnotationsModelMetadataProvider
:
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();
然后你可以DisplayFormat
从十进制属性中删除属性。请注意,这不会影响其他属性,您可以安全地在十进制属性上添加其他数据注释。
阅读有关MetaData类及其属性的更多信息。
快乐编码!:)
您必须使用Model Templates签出。
如果要自定义小数点在整个应用程序中的显示方式,则必须创建一个名为decimal.cshtml(如果是 Razor)的局部视图并将其存储在Views/Shared/DisplayTemplates文件夹中。
在 decimal.cshtml 中,您可以控制模型小数的显示方式。
像这样,要自定义显示以进行编辑的方式,您必须创建另一个具有相同名称的视图并将其转储到Views/Shared/EditorTemplates文件夹中。
MVC 框架负责其余的事情。
前任。
视图/共享/DisplayTemplates/decimal.cshtml
@model decimal
<p>
@Model.ToString("0.00")
</p>
无法准确理解您想知道的内容。再描述一些
我认为没有直接的功能可以做到这一点。拥有一个接口并为所有实体实现相同的接口怎么样?