动态表达式的目的是在解析时设置控件属性,而不必依赖于数据绑定机制。为了了解动态表达式的要旨,回想使用#表达式时生成的代码。如果使用一个#表达式,则在DataBinding事件处理程序内完成属性赋值。如果使用$表达式,则属性赋值在生成该控件的方法内完成。
所有的动态表达式都是ExpressionBuider公共类的实例。该类定义了一个表达式解析引擎,并返回一棵代表表达式的CodeDom树。
要以声明方式把一个控件属性绑定到该表达式的值,请遵循如下模式:
<%$ Prefix:Expression %>
$ConnectionStrings表达式生成器,可以访问配置文件中的ConnectionStrings配置节的属性,如
<%$ ConnectionString:LocalNWind.ConnectionString %>
$AppSettings表达式生成器<%$ AppSettings:KeyName %>
$Resources表达式生成器<%$ Resources:MyResources,AppTitle %>
编写一个自定义的表达式生成器
要创建一个自定义的表达式,有两个任务要执行。首先,创建一个继承自ExpressionBuilder的类,并在配置文件的<compilation>节中注册它。具体的可以参看MSDN中关于ExpressionBuilder的说明!
实例下载