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