Asp.Net 4.0 新特性 系列 之一 从页面标记<%%>说起
VS2010在4月份已经正式发布了,Asp.Net 4.0给我带来了一些新的东西。体验一把。
1. 从页面标记<%%>说起
2. Asp.Net 4.0 中可以用自定义的Provider做OutputCache 了
3. SEO增强支持MetaKeywords,和MetaDescription,RedirectPermanant
4. SEO增强之URL Routing
5. 输出更纯净的Html代码,ViewStateMode和ClientIDMode,CheckBoxList等
在Asp.Net4.0中<%符号表达式%>有四种形式,分别为<%=”hello world”%>,<%$expression%>,<%#expression%>,<%:abc%> 我们分别来看一下
1. <%=表达式%> 这中写法支持asp,jsp等等,他就是直接输出表达式的值,它等同于
1 | Response.Write(表达式); |
2. <%$declarationExp:expression%> 这是一种声明式表达式,他在Asp.Net 2.0时被引入,我们可以利用这个表达式,输出AppSettings中的配置,给SqlDataSource控件设定连接字符串等等,在.Net 4.0时我们可以在这个表达式中输出Url Routing中的参数值,或者根据设置得到UrlRouting后的URL
例如:
1)在Literal中显示URL Routing 当前的action值
1 | < asp:Literal ID="l" EnableViewState="false" Text="<%$RouteValue:action %>" runat="server"></ asp:Literal > |
2)传入参数显示Routing后的Url
1 | < asp:Label ID="lb" EnableViewState="false" Text="<%$RouteUrl:controller=Category ,action=edit,id=1%>" runat="server"></ asp:Label > |
在.Net 4.0支持的系统默认支持的表达式有:Resources, ConnectionStrings,AppSettings,RouteUrl,RouteValue这些在根配置文件web.config的system.web/compilation/expressionBuilders配置节中有配置
更多介绍可以参考:http://msdn.microsoft.com/en-us/library/d5bd1tad(v=VS.100).aspx
http://msdn.microsoft.com/en-us/library/system.web.compilation.routeurlexpressionbuilder.aspx
3. <%#expression%>表示数据绑定,必须在调用DataBind方法才能输出绑定的值,通常用在DataGrid,Repeater,ListView等模板控件中。
4. <%:expression%>它是一个新增的表达式方式,表示将expression HtmlEncode后输出,如果这个表达式的类型时IhtmlString,它将通过IhtmlString接口的ToHtmlString()方法来做UrlEncode,.Net 4.0中HtmlString类通过实现这个接口,避免重复做HtmlEncode
例如:
1. 需要做HtmlEncode时使用表达式
1 | <%:”< h1 >I’a a test</ h1 >”%> |
将输出
1 | < h1 >I’a a test</ h1 > |
2. 不需要做HtmlEncode时使用表达式
1 | <%: new HtmlString(”< h1 >I’a a test</ h1 >”)%> |
将输出
1 | < h1 >I’a a test</ h1 > |
这个很酷的feature在Asp.Net Mvc 2.0中被广泛使用。
这些表达式都出现在aspx页面上,在编译aspx页面时编译程序会使用正则比表达式将这些表达式解析成后台代码来执行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2008-05-15 页面执行时生成静态文件的方法