我需要显示一个标签,其文本在运行时确定。
以前,当文本在编译时已知时,我能够使用 DisplayName DataAnnotation 来设计我的模型如何表示其数据。
例如,我曾经有这个:
[DisplayName("Task Template")]
public List<KeyValuePair<int, string>> TaskTemplate { get; set; }
<%= Html.LabelFor(model => model.TaskTemplate) %>
<%= Html.DropDownListFor(model => model.TaskTemplateFlag, new SelectList(Model.TaskTemplate, "Key", "Value"))%>
但现在 DisplayName 需要在运行时确定。
根据这个 StackOverflow 答案,没有办法使用 DataAnnotation 来做到这一点。
我想知道最佳实践是什么?我是否完全停止使用 LabelFor?我是否应该在我的模型中存储一堆字符串属性,将我的值加载到属性中,然后使用 DisplayFor 进行渲染?
更新:我认为这可能是一个足够好的解决方案:
public string TaskTemplateLabel { get; set; }
public List<KeyValuePair<int, string>> TaskTemplate { get; set; }
//Constructor: TaskTemplateLabel = GetLabelFromDataSource();
<%= Html.LabelFor(model => model.CurrentDeviceName, Model.TaskTemplateLabel)%>