如何在ASCX上设置控件的Int属性?

时间:2010-10-15 18:47:57

标签: c# asp.net properties

我有一个包含

的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 个答案:

答案 0 :(得分:7)

将其更改为

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

ASP.Net解析器将自动解析整数属性。

服务器端控件不支持

<%= ... %>表达式,因此您的代码会导致ASP.Net尝试(并失败)将整个字符串<%= Int32.Parse("58") %>解析为整数。

答案 1 :(得分:7)

我不明白为什么你不能简单地使用文字而不是字符串表示:

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

如果要动态设置此值,则需要在代码块后面或代码块内的代码中执行此操作,例如在页面加载事件句柄中,因为您不能使用代码块(<%%>)在服务器端控件中:

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

或者,在ascx内,服务器端控件之外:

<% Bar.Value = 58; %>