我有一个类似于这样的Web控件:
在我的Render方法中,变量Fa.La.La没有被求值。它作为原始文本"<%= Fa.La.La %>"传递进来。如何评估它?
我不介意变量以什么方式传递。如果变量可以通过<%#...%>进行传递并能够被求值,那么就可以正常工作。关键是我想在调用Render()方法之前/同时对一些服务器端变量进行求值。
我唯一能想到的办法是使用正则表达式提取<%=...%>的内容,然后使用反射等方法对其进行处理,但肯定有更优雅的做法。
这个问题与在runat=server中使用<%=xx%>的server变量非常相似,但并不完全相同,因为那里的任何答案都没有用。
public class Foo : WebControl { [Bindable(true)] [Category("Default")] [DefaultValue("")] [Localizable(true)] public string Bar { get; set; }我想像下面这样在aspx页面中使用这个web控件:
protected override void Render(HtmlTextWriter output) { output.WriteLine(Bar); } }
<cc1:Foo Bar="<%= Fa.La.La %>/otherstuff" runat="server" />(显然,这段代码是为了展示问题而简化的。)
在我的Render方法中,变量Fa.La.La没有被求值。它作为原始文本"<%= Fa.La.La %>"传递进来。如何评估它?
我不介意变量以什么方式传递。如果变量可以通过<%#...%>进行传递并能够被求值,那么就可以正常工作。关键是我想在调用Render()方法之前/同时对一些服务器端变量进行求值。
我唯一能想到的办法是使用正则表达式提取<%=...%>的内容,然后使用反射等方法对其进行处理,但肯定有更优雅的做法。
这个问题与在runat=server中使用<%=xx%>的server变量非常相似,但并不完全相同,因为那里的任何答案都没有用。