在分析页的过程中计算表达式。
命名空间: System.Web.Compilation
程序集: System.Web(在 System.Web.dll 中)
ExpressionBuilder 类型公开以下成员。
| 名称 | 说明 | |
|---|---|---|
| Equals(Object) | Object。) | |
| EvaluateExpression | 在派生类中重写时,会返回一个对象,该对象表示计算出的表达式。 | |
| Finalize | Object。) | |
| GetCodeExpression | 在派生类中重写时,返回在页执行过程中用来获取计算出的表达式的代码。 | |
| GetHashCode | Object。) | |
| GetType | Object。) | |
| MemberwiseClone | Object。) | |
| ParseExpression | 在派生类中重写时,会返回一个对象,该对象表示通过分析得到的表达式。 | |
| ToString | Object。) |
第一个代码示例演示如何在 Web.config 文件中注册自定义表达式生成器。
<configuration>
<system.web>
<compilation>
<expressionBuilders>
<add expressionPrefix="MyCustomExpression"
type="MyCustomExpressionBuilder"/>
</expressionBuilders>
</compilation>
</system.web>
</configuration>
第二个代码示例演示如何在 .aspx 文件中引用表达式。
<asp:Label ID="Label1" runat="server" Text="<%$ MyCustomExpression:Hello, world! %>" />
若要运行此代码示例,必须将该类放入 App_Code 文件夹中。
using System; using System.CodeDom; using System.Web.UI; using System.ComponentModel; using System.Web.Compilation; using System.Web.UI.Design; // Apply ExpressionEditorAttributes to allow the // expression to appear in the designer. [ExpressionPrefix("MyCustomExpression")] [ExpressionEditor("MyCustomExpressionEditor")] public class MyExpressionBuilder : ExpressionBuilder { // Create a method that will return the result // set for the expression argument. public static object GetEvalData(string expression, Type target, string entry) { return expression; } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return GetEvalData(entry.Expression, target.GetType(), entry.Name); } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Type type1 = entry.DeclaringType; PropertyDescriptor descriptor1 = TypeDescriptor.GetProperties(type1)[entry.PropertyInfo.Name]; CodeExpression[] expressionArray1 = new CodeExpression[3]; expressionArray1[0] = new CodePrimitiveExpression(entry.Expression.Trim()); expressionArray1[1] = new CodeTypeOfExpression(type1); expressionArray1[2] = new CodePrimitiveExpression(entry.Name); return new CodeCastExpression(descriptor1.PropertyType, new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetEvalData", expressionArray1)); } public override bool SupportsEvaluate { get { return true; } } }
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2
.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。