Как установить свойство Int элемента управления в ASCX? - PullRequest
7 голосов
/ 15 октября 2010

У меня есть ASCX, который содержит

<my:Foo ID="Bar" runat="server" Value='' />

Я хочу установить Value с textbox1.Text, но Value - это Int32.Я ищу что-то вроде этого:

<my:Foo ID="Bar" runat="server" Value='<%= Int32.Parse(textbox1.Text) %>' />

Но я получаю

Parser Error Message: Cannot create an object of type 'System.Int32' from its string representation '<%= Int32.Parse(textbox1.Text) %>' for the 'Value' property.

Есть ли способ сделать это в файле ASCX?Должен ли я реализовать TypeConverter для этого свойства?

Ответы [ 2 ]

7 голосов
/ 15 октября 2010

Я не понимаю, почему вы не можете просто использовать литерал вместо строкового представления:

<my:Foo ID="Bar" runat="server" Value="58" />

Если вы хотите установить это значение динамически, вам нужно будет сделать это в коде позади или внутри блока кода, например, в дескрипторе события загрузки страницы, поскольку вы не можете использовать блоки кода (<%%>) внутри управление на стороне сервера:

// code behind, in the page_load event handler
Bar.Value = 58;

Или, в пределах ascx, вне элементов управления на стороне сервера:

<% Bar.Value = 58; %>
7 голосов
/ 15 октября 2010

Измените его на

<my:Foo ID="Bar" runat="server" Value="58" />

Анализатор ASP.Net автоматически проанализирует целочисленные свойства.

<%= ... %> выражения не поддерживаются для серверных элементов управления, поэтому ваш код заставляет ASP.Net пытаться (и не удается) проанализировать буквенную строку <%= Int32.Parse("58") %> как целое число.

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