Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何自动附加到decimal数据类型DisplayFormatAttribute_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 如何自动附加到decimal数据类型DisplayFormatAttribute

C# 如何自动附加到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

我使用的是实体框架v6.1.3(代码优先)和ASP.NET MVC v5.2.3

我知道我可以在这样的十进制数据类型中使用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));
   }
}
公共类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)