C# 具有实体框架和MVC的用户特定显示名称属性

C# 具有实体框架和MVC的用户特定显示名称属性,c#,asp.net-mvc,entity-framework,data-annotations,C#,Asp.net Mvc,Entity Framework,Data Annotations,对于我们的应用程序,我们在代码优先类上使用displayname属性来显示属性的名称 [Display(Name = "Username")] public string Name { get; set; } 我们希望能够根据登录用户更改此显示名称。我们的目标是创建一个表,其中包含每个用户的映射以及他们更改显示名称的能力,但是我们仍然希望使用显示名称的便利性 我们已经研究了LocalizedDisplayNameAttribute,但是它仅在第一次请求模型时运行,但是每次请求模型时

对于我们的应用程序,我们在代码优先类上使用displayname属性来显示属性的名称

   [Display(Name = "Username")]
   public string Name { get; set; }
我们希望能够根据登录用户更改此显示名称。我们的目标是创建一个表,其中包含每个用户的映射以及他们更改显示名称的能力,但是我们仍然希望使用显示名称的便利性


我们已经研究了LocalizedDisplayNameAttribute,但是它仅在第一次请求模型时运行,但是每次请求模型时我们都需要它。即使有可能,我们也不希望每次加载页面时都重新查询数据库以获得最新的映射显示名称。理想情况下,我们希望仅在登录时更新显示名称。

创建自己的显示属性是一种方法。这里有一些很好的教程和教程

您可能会发现第二个更有用,因为这将允许您更改枚举上的显示,但我将把它留给您进一步研究。

这对我很有用

public class DynamicDisplayAttributeNames
{
    // These can be assigned to at runtime. 
    public static string Keyword1 { get; set; } = "Keyword One";    
    public static string Keyword2 { get; set; } = "Keyword Two";
}
请注意,对于该类的所有实例,实体框架使用的显示名称都将更改

[Display(Name = "Keyword1", ResourceType = typeof(DynamicDisplayAttributeNames))]
[StringLength(50)]
string Keyword1 { get; set; }

[Display(Name = "Keyword2", ResourceType = typeof(DynamicDisplayAttributeNames))]
[StringLength(50)]
string Keyword2 { get; set; }

我认为您可能可以编写自己的
DisplayAttribute
实现代码项目示例非常好,但是,当我想要/需要时,我如何让该属性刷新呢?如果没有看到您的代码,很难说清楚,但我假设您使用的是jquery,因此ajax调用应该能够处理您需要更新的任何内容。这对我也有帮助。