Как программно установить свойство элемента управления в файле aspx? - PullRequest
1 голос
/ 27 мая 2010

Это может быть очень глупый вопрос, но я не могу заставить его работать. Во многих местах я использую следующий синтаксис для динамической привязки свойства элемента управления в файле aspx к записи ресурса, например

<SomeFunnyControl Text="<%$ Resources : ResClass, ResEntry %>" />

Я хочу сделать то же самое с классом, содержащим некоторые константы, что-то вроде

<SomeFunnyControl Text="<%= MyConstantsClass.MyStringConstant %>" />

Но это не похоже на работу, оно просто устанавливает текст в точное выражение без его оценки. Я использую ASP.NET 3.5 кстати.

Я пробовал метод привязки данных, но я получаю HttpParseException, говорящий

Только выражения выражения поддерживается на объектах, которые имеют Событие привязки данных.

Ответы [ 4 ]

3 голосов
/ 27 мая 2010

Эта статья: CodeExpressionBuilder может быть интересным / полезным (хотя написано для ASP.NET 2.0).

(кажется), чтобы вы могли написать ... Text="<%$ Code: DateTime.Now %>" .... Это может помочь, нет? Хотя это и немного накладные расходы.

2 голосов
/ 27 мая 2010

Ваш код должен выглядеть так:

<asp:Label ID="lblMyStringConstant" runat="server" Text='<%# MyConstantsClass.MyStringConstant %&>'></asp:Label>

Вам также необходимо вызвать DataBinding для этого элемента управления, например:

lblMyStringConstant.DataBind();

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

1 голос
/ 27 мая 2010
<asp:Label ID="lbl" Text="<%# SomeText %>" runat="server" />

Затем вызовите lbl.DataBind (); или введите данные в какой-нибудь контейнер с этикеткой.

0 голосов
/ 27 мая 2010

Если у вас это так, оно должно работать на самом деле:

public static class MyConstantsClass
{
   public static string MyStringConstant = "Hello World!";
}

или альтернативно

public class MyConstantsClass
{
   public const string MyStringConstant = "Hello World!";
}

Если вы объявите это как

<asp:Label ID="Label1" runat="server" Text="<%= MyNamespace.MyConstantsClass.MyStringConstant %>"></asp:Label>

это не будет работать, и на выходе будет "<%= MyNamespace.MyConstantsClass.MyStringConstant %>".

Что вы могли бы сделать альтернативно, это написать так:

<asp:Label ID="lblTest" runat="server"><%= MyNamespace.MyConstantsClass.MyStringConstant %></asp:Label>

Это прекрасно работает для меня, но учтите, что вы должны предоставить полностью определенное пространство имен вашему классу в определении ASPX. По крайней мере, иначе это не сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...