特点: 在aspx页面中的部件属性注入表达式构造器(expressionBuilder)返回的表达式对象,使部件属性在运行时得到赋值。
表现形式:<asp:Button ID="Button1" runat="server" Text="Try this" Enabled="<%$ Authenticate:AddItem %>"/>
Enabled 后就是实现权限验证的代码, 返回的值可使该控间可见或不可见,不需要codebehind的代码支持。AddItem 是参数,是该权限的名称。
优点:
1.节省大量codebehind中重复众多的校验代码:
以往在用户界面控制执行权限的方式一般控制按钮是否可见或是否使能(enable),
如果该用户拥有权限的话, 按钮就可见或enabled, 否则相反, 现在这一步可以省略,
代码变得干净,有利于提高维护和开发的效率。
实现步骤:
1. 在aspx上拖出一个button或ImageButton
2. 编写继承System.Web.Compilation.ExpressBuilder的类型,并复写GetCodeExpression函数。在里面可以接受参数并对参数进行验证操作,并返回含有该结果值的codePrimitiveExpression对象
3.在web.config中放入类型映射
<compilation debug="true">
<expressionBuilders>
<add expressionPrefix="Authenticate" type="BusinessLogic.Security.ExpressionBuilder.AuthExpressionBuilder"/>
</expressionBuilders>
</compilation>
其中Authenticate 是假名alias,指向第二步指的类型
4.点击ASPX上的button,进入属性Expression, 选择Enabled属性,可看到右边表达式类型出现在web.config里注明的假名
5.在表达式属性里加属性值
6.Aspx 内容 成为表现形式:<asp:Button ID="Button1" runat="server" Text="Try this" Enabled="<%$ Authenticate:AddItem %>"/>
7 运行结果
(应用在菜单项控件的效果, 令新建项1 为disable)