我使用的是Entity Framework v6.1.3(代码优先)和ASP.NET MVC v5.2.3
我知道我可以在 decimal 数据类型中使用 DisplayFormatAttribute
[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));
}
}
所以我想知道是否可以自动分配 DisplayFormatAttribute 。
答案 0 :(得分:3)
您可以为十进制类型创建显示模板并将其放到 Views / Shared / DisplayTemplates 文件夹中:
@model System.Decimal
<span>
@Model.ToString("n2")
</span>
在视野中,只需使用DisplayFor
或DisplayForModel
方法:
@Model.DisplayFor(m => m.Foo)
答案 1 :(得分:2)
您可以为十进制类型创建一个DisplayTemplate,每个小数的格式都是相同的。
来自argparse
定义自定义模板
我们可以通过将自定义显示模板放入路径Views / Shared / DisplayTemplates / .cshtml来覆盖默认模板。它们的结构与任何MVC局部视图类似。示例用法可以是在小数值的前面添加美元符号。 模型
public class TestModel
{
public decimal Money { get; set; }
}
查看/共享/ DisplayTemplates / decimal.cshtml
@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)
答案 2 :(得分:0)