- 在设计时的ASP.NET视图页面使用<% %>标记语法,通常会用于三种情况:
1.页面指令
例如:<% @Page %>
2.数据绑定
例如:<%Eval()%>或<%Bind()%>
3.将托管代码运算结果直接输出到视图中指定位置
例如:<label><%=user.identity.name %></label>
- 使用<% %>标记,有时会给ASP.NET开发带来很大的便利性,但也必须注意,这样会使得视图与业务逻辑混杂一起,造成维护上的不便。
- 使用注意事项:
1.此标记作为托管代码结果输出之用时,他不能使用在服务器控件上,只是在进行数据绑定是可以使用。因为在Server端运行时对服务器控件进行处理时,不会去处理<% %>标记,除非遇到Eval或Bind关键字s
2.假设从数据库内读取一个字符型数据,如果他超过20个字符长度,就只取前20位,那么使用<%# if(eval("dataFieldName").length > 20,eval("dataFieldName").substring(0,20),eval("dataFieldName")) %>
3.<%=user.identity.name%>是<% response.write(user.identity.name)%>的简写形式
4.服务器控件上使用<%# %>数据绑定时,不能把<%# %>与其他字符类型数据混在一起连接。
5.用作数据绑定时,<%# %>标记用‘’单引号包裹
6.在JS脚本中使用<% %>作为托管代码返回值之用时,记住要用‘’单引号包裹
从ScottGu大神那里看到的,ASP.NET4.0启用新的<%: %>语法用于HTML编码。Html Encoding的一般用于防止跨站攻击(XSS),详情可以参考我之前写过的一篇文章:http://www.cnblogs.com/coderzh/archive/2008/09/06/1285500.html。
之前的做法是:
如果value已经被Html Encode过一次的话,再调用Server.HtmlEncode会得到非预期的值。
新的<%: %>语法解决了这个问题,使用起来也非常的简单。