C# 如何自动附加到decimal数据类型DisplayFormatAttribute
我使用的是实体框架v6.1.3(代码优先)和ASP.NET MVC v5.2.3 我知道我可以在这样的十进制数据类型中使用DisplayFormatAttributeC# 如何自动附加到decimal数据类型DisplayFormatAttribute,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我使用的是实体框架v6.1.3(代码优先)和ASP.NET MVC v5.2.3 我知道我可以在这样的十进制数据类型中使用DisplayFormatAttribute [DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:N2}")] public decimal Foo { get; set; } 现在我需要的是将该属性自动应用于每个实体中的每个小数点 这可能吗 我有一个类似的要求,即每一个十进制数必须有20
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:N2}")]
public decimal Foo { get; set; }
现在我需要的是将该属性自动应用于每个实体中的每个小数点
这可能吗
我有一个类似的要求,即每一个十进制数必须有20,8的精度,我用这个代码解决了这个问题
public class EntitiesContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Set all decimals data types by default as Decimal(20, 8)
modelBuilder.Properties<decimal>().Configure(c => c.HasPrecision(20, 8));
}
}
公共类EntitiesContext:DbContext
{
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
//默认情况下,将所有小数数据类型设置为十进制(20,8)
modelBuilder.Properties().Configure(c=>c.HasPrecision(20,8));
}
}
因此,我想知道是否可以自动分配DisplayFormatAttribute。您可以为decimal类型创建显示模板,并将其放入Views/Shared/DisplayTemplates文件夹:
进一步阅读:您可以为decimal类型创建显示模板,并将其放入Views/Shared/DisplayTemplates文件夹:
进一步阅读:您可以为十进制类型创建一个显示模板,因为每个十进制都将以相同的方式格式化 从 定义自定义模板 我们可以通过将自定义显示模板放置到路径视图/Shared/DisplayTemplates/.cshtml中来覆盖默认模板。它们的结构类似于任何MVC局部视图。例如,在十进制值的前面加上一个美元符号。 模型 视图/Shared/DisplayTemplates/decimal.cshtml
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
您可以为十进制类型创建DisplayTemplate,因为每个十进制都将以相同的方式格式化 从 定义自定义模板 我们可以通过将自定义显示模板放置到路径视图/Shared/DisplayTemplates/.cshtml中来覆盖默认模板。它们的结构类似于任何MVC局部视图。例如,在十进制值的前面加上一个美元符号。 模型 视图/Shared/DisplayTemplates/decimal.cshtml
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
经过深入研究,我找到了答案 这是不可能的 答案是这样的
经过深入搜索,我找到了答案 这是不可能的 答案是这样的
谢谢弗兰和谢尔盖·别列佐夫斯基,你的回答部分解决了问题。谢谢弗兰和谢尔盖·别列佐夫斯基,你的回答部分解决了问题。
public class TestModel
{
public decimal Money { get; set; }
}
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
@model TestModel
@Html.DisplayFor(e => e.Money)