我有一个包含
的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?
答案 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; %>