【发布时间】:2019-10-18 22:29:56
【问题描述】:
我有这个视图模型:
public class ProjectViewModel
{
[Display(Name = "End date")]
public DateTime ProjectEnd { get; set; }
public string ProjectType { get; set; }
// more properties
}
我希望根据ProjectType 的值更改ProjectEnd 的显示名称。 ProjectType 不是用户可编辑的字段,它只能在控制器中以编程方式设置。
我试过这个:
[Display(Name = (ProjectType == "project"?"End date":"Due date"))]
...但是ProjectType 抛出这个编译时错误:
非静态字段、方法或属性“ProjectViewModel.ProjectType”需要对象引用
我正在尝试的可能吗?我当然可以在视图中对标签进行硬编码,但我不想这样做。
另一个稍微好一点的解决方案可能是有两个DateTime-properties,并根据ProjectType 的值,只在视图中显示一个或另一个。
【问题讨论】:
-
如果您将字段数据和标签之间的关系定义为模型数据的一部分(以避免在前端对此进行编码),那么您可以将其显示在页面上的隐藏字段中。然后,您可以在输入数据字段上设置一个 JavaScript 事件,以检查更改并参考隐藏字段以查看标签应该是什么。
-
@Michael
ProjectType在创建实体模型后不会更改。它在创建时在控制器中设置。 -
酷,我喜欢@Nkosi 将标签定义为字符串的解决方案的外观
标签: c# asp.net-core-mvc data-annotations