Проблема возникает из-за того, что вы пытаетесь встроить серверный элемент управления / значение в другой серверный элемент управления. Это невозможно напрямую в asp.net, если вы не используете привязку данных или построитель пользовательских выражений.
Для вашей конкретной ситуации вам нужно создать пользовательский конструктор выражений, который возвращает значение из вашего статического класса.
Конечный результат должен выглядеть примерно так:
<asp:TemplateField HeaderText="<$ ConstantManager:Name >">
Что абсолютно допустимо в aspx-файле, если вы определили конструктор пользовательских выражений с префиксом "ConstantManager"
.
Фактический пример создания построителя пользовательских выражений можно найти здесь: ExpressionBuilder Class .
Сложение
Кроме того, я думаю, что привязка данных также будет работать, но мне кажется, не точное решение для такой ситуации.
Просто используйте этот синтаксис в разметке aspx:
<asp:TemplateField HeaderText="<# ConstantManager.Name >">
И, при загрузке страницы, позвоните:
protected void Page_Load(object sender, System.EventArgs e)
{
this.DataBind();
}
Лично мне не нравится это решение из-за части Page_Load
. Во всяком случае, для этого не нужно ничего специально объявлять / кодировать по сравнению с пользовательскими выражениями.
Надеюсь, это поможет!