実行時にテキストが決定されるラベルを表示する必要があります。
以前は、コンパイル時にテキストがわかっていたときに、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)%>