Подтвердить что ты не робот

Как использовать константу С# на странице ASP.Net?

Приведенные ниже примеры могут иметь мало смысла, но это потому, что я фокусируюсь на синтаксисе.

Скажем, у меня такой код С#:

public static class Foo
{
  public const string Bar = "hello world.";
}

Теперь я хотел бы использовать константу Foo.Bar в ASP.Net вместо того, чтобы набирать каждый раз "hello world". Поэтому я использовал этот синтаксис:

<p><%= Foo.Bar %></p>

Это работает. Он также работает в таких случаях:

<p>"<%= Foo.Bar %>"</p>

<p class="<%= Foo.Bar %>">the weird, nonsense example</p>  

Итак, он работает и с кавычками. Однако у меня также есть случаи, когда котировки получают более высокий приоритет:

<custom:Header runat='server' Text="<%= Foo.Bar %>"/>

(header - это настраиваемый элемент управления - он просто добавляет некоторые CSS по умолчанию и положению). В этом случае кавычки имеют более высокий приоритет, а весь текст всасывается как есть, по сути я получаю заголовок с текстом

<% = Foo.Bar% >

Итак, мой вопрос - , что такое синтаксис для получения значения константы С#, независимо от того, что (IOW - с наивысшим приоритетом)?

редактирует:

<custom:Header runat='server' Text="<%# Foo.Bar %>"/>

(отметить хэш вместо знака равенства) тоже не работает.

4b9b3361

Ответ 1

Старайтесь избегать использования кода С#, отличного от кода. Лучше установите элемент управления меткой на странице aspx и установите для него свойство text с помощью Foo.Bar

myLabel.Text = Foo.Bar;

После этого у вас есть код на стороне сервера в коде, он намного чище и доступен для других.

Ответ 2

Вы можете использовать выражения привязки данных на своей странице, пока страница привязана к базе данных. Вы все равно можете использовать свой пример:

<custom:Header runat='server' Text="<%# Foo.Bar %>"/>

Но вам также нужно убедиться, что вы вызываете DataBind() в свой код позади, чтобы привязать все выражения на своей странице, которые находятся за пределами элемента управления привязкой данных.

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}

Ответ 3

Для настраиваемого элемента управления это будет работать, как описано выше, если ваш контроль вызывает DataBind() внутренне (например, в WebControl.Render и т.д.)

Ответ 4

Вам нужно импортировать пространство имен на странице asp.net <% import namespace = "namespace.of.foo.class" % >

К сожалению, вы не можете использовать <% = синтаксис в элементах управления сервером. В случае серверных элементов управления вам необходимо назначить его в коде. И не имеет значения, является ли оно постоянным или просто свойством класса страницы.

Ответ 5

afaik значение в <% = используется во время этапа рендеринга жизненного цикла страницы

элементам управления нужны эти значения ранее в жизненном цикле. Использование <% # будет происходить во время привязки данных.

Другой вариант - просто установить его на странице_Load. Его способ, которым он должен использоваться в обычном asp.net. В качестве альтернативы вы можете установить его еще раньше/во время init (если вы не манипулируете им).

Ответ 6

Простые кавычки должны делать трюк

Text='<%= Foo.Bar %>'

или (в зависимости от вашего сценария)

Text='<%# Foo.Bar %>'