C# 一个特性的显示名称(标签)是否可以根据另一个特性的值进行更改?

C# 一个特性的显示名称(标签)是否可以根据另一个特性的值进行更改?,c#,asp.net-core-mvc,data-annotations,C#,Asp.net Core Mvc,Data Annotations,我有这个模型: public class ProjectViewModel { [Display(Name = "End date")] public DateTime ProjectEnd { get; set; } public string ProjectType { get; set; } // more properties } 我希望根据ProjectType的值更改ProjectEnd的显示名称项目类型不是用户可编辑的字段,它仅在控制器中以编程方式

我有这个模型:

public class ProjectViewModel
{
    [Display(Name = "End date")]
    public DateTime ProjectEnd { get; set; }
    public string ProjectType { get; set; }
    // more properties
}
我希望根据
ProjectType
的值更改
ProjectEnd
的显示名称<代码>项目类型不是用户可编辑的字段,它仅在控制器中以编程方式设置

我试过这个:

[Display(Name = (ProjectType == "project"?"End date":"Due date"))]
。。。但是
ProjectType
抛出此编译时错误:

非静态字段、方法或属性“ProjectViewModel.ProjectType”需要对象引用

我所尝试的可能吗?我当然可以在视图中硬编码标签,但我不想这样做

另一个稍微好一点的解决方案是使用两个
DateTime
-属性,并根据
ProjectType
的值,在视图中显示其中一个属性

我所尝试的可能吗

没有

可能的解决办法

public class ProjectViewModel {    
    public string ProjectEndLabel => ProjectType == "project" ? "End date" : "Due date";
    public DateTime ProjectEnd { get; set; }
    public string ProjectType { get; set; }
    // more properties
}
然后在视图中使用绑定到
Model.ProjectEndLabel

@model项目视图模型
@Model.ProjectEndLabel

我所尝试的可能吗

没有

可能的解决办法

public class ProjectViewModel {    
    public string ProjectEndLabel => ProjectType == "project" ? "End date" : "Due date";
    public DateTime ProjectEnd { get; set; }
    public string ProjectType { get; set; }
    // more properties
}
然后在视图中使用绑定到
Model.ProjectEndLabel

@model项目视图模型
@Model.ProjectEndLabel


如果将字段数据和标签之间的关系定义为模型数据的一部分(以避免在前端对此进行编码),则可以将其显示在页面上的隐藏字段中。然后,您可以在输入数据字段上设置一个JavaScript事件,以检查更改并引用隐藏字段以查看标签应该是什么。@Michael
ProjectType
在创建实体模型后不会更改。它是在创建时在控制器中设置的。很酷,我喜欢@Nkosi解决方案的外观,它将标签定义为字符串。如果您将字段数据和标签之间的关系定义为模型数据的一部分(以避免在前端对其进行编码),那么您可以将其显示在页面上的隐藏字段中。然后,您可以在输入数据字段上设置一个JavaScript事件,以检查更改并引用隐藏字段以查看标签应该是什么。@Michael
ProjectType
在创建实体模型后不会更改。它是在创建时在控制器中设置的。酷,我喜欢@Nkosi解决方案的外观,它将标签定义为字符串