我有一个看起来像这样的网络控件
公共类 Foo : WebControl { [可绑定(真)] [类别(“默认”)] [默认值(””)] [可本地化(真)] 公共字符串栏 { 获取;放; } 受保护的覆盖无效渲染(HtmlTextWriter 输出) { output.WriteLine(Bar); } }
我想把这个 webcontrol 放在我的 aspx 页面中,如下所示:
<cc1:Foo Bar="<%= Fa.La.La %>/otherstuff" runat="server" />
(显然这段代码被简化以显示问题)
在我的 Render 方法中,变量 Fa.La.La 没有被评估。它以原始文本“<%= Fa.La.La %>”的形式出现我如何评估它?
我并不特别说明变量是如何传入的。如果变量以 <%# ... %> 的形式传入,则可以对其进行评估,那可以正常工作。关键是我有一些服务器端变量要在调用 Render() 方法之前/期间进行评估。
我唯一能想到的是使用正则表达式来获取 <%= ... %> 的内容并使用反射或其他东西,但必须有一种更优雅的方式来做到这一点。
这个问题与在带有 runat=server 的 href <%= xx %> 中使用服务器变量非常相似,但并不完全相同,因为那里的答案都没有用。