ASP.NET4.0新改进和新特性

Visual Studio 2010 Beta 1和.NET Framework Beta 1已经发布有一段时间了,我也早就该写这篇文章了。ASP.NET 4.0改进了许多不同的场景集(set of scenarios),如Webforms ,Dynamic Data以及基于AJAX的Web开发。此外还有许多对支撑ASP.NET的核心运行时环境的改进,比如Caching, Session,还有Request/Response对象。

在这篇文章里,我们将一起检验一下对web form的一些改进。这样的改进很多,我们还将在随后的文章里体验更多这种改进。

使用ViewStateMode属性控制View State - 性能的增强

在ASP.NET Webform里最为人所诟病的毛病之一就是不断增多的viewstate影响到性能。尽管之前就可以把EnableViewState属性设为true或false ,之后,所以有的controls都默认继承,并且即使你在control层把它设为启用,也还是会产生不一致的行为。

在ASP.NET 4.0中 , ViewStateMode属性有助于确定每个control的Viewstate是否应启用,禁用或被继承。例如:

<ASP:Panel ID="pnlViewState" runat="server" ViewStateMode="Disabled">
      Disabled: <asp:Label ID="label1" runat="server"  Text="Value set in markup"ViewStateMode="Inherit"  /><br />
           Enabled: <asp:Label ID="label2"  runat="server" Text="Value set in markup"ViewStateMode="Enabled" />
  <hr />
  <asp:button ID="Button1" runat="server"  Text="Postback" />
    </asp:Panel>

后端代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            label1.Text = "Value set in code behind";
            label2.Text = "Value set in code behind";
        }
    }

运行这个页面,你会发现两个标签的初值都被设为了"Value set in code behind",而点击按钮(postback)后,label1的值变成了“Value set in markup” ,label2的值则保持不变。正如你所看到的那样,保存这两个标签的面板把ViewStateMode设置为禁用,label1继承了这一设置(如果没有指定的话这是默认值),label2则设为了启用。这就是为什么label2保持了viewstate而label1丢失了。

虽然可以说之前就可以使用简便的EnableViewState属性,但一直就不稳定。想想我们在大多数性能讨论会(performance session)上,都会说如果viewstate不能正常运作就先禁用它然后再在control层设为启动,这个ViewStateMode的引入可以说是有助提升性能的一个很好的结构性变动(architectural change)。

网页的Meta Keyword和Description - 搜索引擎优化功能

在Visual Studio 2008中,可以通过直接声明或在程序中使用Page.Title设置网页的标题。随着越来越多的流量通过搜索引擎,网页的标题,关键字和描述变得更为重要了。虽然由于关键字被人滥用导致许多搜索引擎已经对此忽略不计,但是,页面的描述还是Google,Bing这些主流搜索引擎赖以鉴别和索引网页内容的依据。

ASP.NET中的新功能4.0允许用户像下面这样通过编程的方式设置页面描述和关键词: -

protected void Page_Load(object sender, EventArgs e)
    {
        this.Page.Title = "My ASP.NET Blog";
        this.Page.MetaKeywords = "ASP.NET, Web Development, Blog, ASP.NET Blog";
        this.Page.MetaDescription = "This Blog contains posts related to ASP.NET and Web Development";
    }

以上代码会产生如下标记:

<meta name="keywords" content="ASP.NET, Web Development, Blog, ASP.NET Blog" />

<meta name="description" content="This Blog contains posts related to ASP.NET and Web Development" />

它的运作机制是,如果meta标签已经出现在HTML标签里,那么只要name属性相同,程序中设定的内容就都会被填写到content里。

虽然这看起来很简单,但是在要根据某些条件或标准来动态设置它们的情况下,这就很有用了。目前,这些内容都是在HTML代码里静态地设定的。现在,有了Page类这一级的访问,它们就可以动态地设置了。

对Webforms还有许多其它的改进,比如Routing的增强,ClientID的设置等,我们将在后面的文章里一一详解。

让我们欢呼吧!
 

时间: 2024-11-05 14:52:01

ASP.NET4.0新改进和新特性的相关文章

ASP.NET4.0新特性

原文:ASP.NET4.0新特性 在以前试用VS2010的时候已经关注到它在Web开发支持上的一些变化了,为此我还专门做了一个ppt,当初是计划在4月12日那天讲的,结果因为莫名其妙的原因导致没有语音以致放弃在LiveMeeting上的这次讲课,也导致了本篇的产生. 新增了项目模板 在创建Web项目时可以看到增加了更多的Web项目模板在VS2008中对应的情况如下: 在新模板中有如下改进:基础MemberShip功能.在大多数网站和应用程序中需要进行认证,因此在新模板中增加了认证功能使得用户能在

Asp.Net4.0/VS2010新变化(4):SEO的改进

asp.net4.0的webform中,对于Page对象新增加了二个属性:MetaKeywords,MetaDescription  后端代码上,写法也更简单,以前可能需要这样写: this.Header.Controls.AddAt(0, new HtmlMeta() { Name = "keywords", Content = Website.MetaKeyword });//关键字 this.Header.Controls.AddAt(1, new HtmlMeta() { Na

《圣殿祭司的ASP.NET4.0专家技术手册》----1-2 .NET 4.0平台新功能概览

1-2 .NET 4.0平台新功能概览 圣殿祭司的ASP.NET4.0专家技术手册 .NET平台版本从1.0.1.1.2.0.3.0.3.5不断演进.最新4.0版的重要改进如下: NET Framework 4.0 Visual C# 2010 Visual Basic 2010 Visual F# 2010(或F# 2.0) 新的CLR 4.0运行时 DLR动态语言运行时(Dynamic Language Runtime) ASP.NET 4.0 ASP.NET MVC 2.0(最新版为4.0

《圣殿祭司的ASP.NET4.0专家技术手册》----2-1 C# 4.0语言新功能

2-1 C# 4.0语言新功能 圣殿祭司的ASP.NET4.0专家技术手册 C# 4.0新增的语言功能,除了命名实参和可选实参(VB早已支持)较为常用,其他功能几乎是从动态基础衍生出来的便利性或灵活性,新功能如下: 命名实参和可选实参(Named and Optional Arguments): Dynamic动态类型(Dynamic Type): 共变量与反变量(Covariance and Contravariance): Office可程序性支持(Office Programmabilit

Asp.Net4.0/VS2010新变化(5):可扩展的(分布式)缓存

.net3.0/3.5时代,asp.net的outPut缓存默认只能存放于内存中,但是内存资源是有限的,这就导致了缓存的无法扩展. 而asp.net4.0中允许开发人员对缓存扩展,您可以选择把要缓存的内容,放到内存,硬件,数据库,甚至与时下流行的memcached直接对接. 以下是我摘自msdn的一段话: ASP.NET 4对输出缓存添加了扩展点,现在允许开发人员配置一个或多个定制的输出缓存提供器(output-cache provider).输出缓存提供器可以使用任何存储机制来持久化缓存内容.

Asp.Net4.0/VS2010新变化(3):webform中也可以直接url路由

以前在做asp的时候,要把 /default.asp?id=123映射成/default/123,需要借助IISRewriter这个组件,到了asp.net以后,可以用代码写了,但是个人觉得很麻烦,要写一堆代码,还要修改web.config,现在好了:asp.net4.0中 asp.net mvc中的路由规则全部可以用于webform了   使用步骤: 1.Global.ascx.cs中先注册路由规则 using System; using System.Web.Routing; namespa

《圣殿祭司的ASP.NET4.0专家技术手册》----1-1 ASP.NET平台的三分天下

1-1 ASP.NET平台的三分天下 圣殿祭司的ASP.NET4.0专家技术手册 如果访问微软www.asp.net网站,会发现ASP.NET技术目前有3位成员:Web Form.MVC和Web Pages,如图1-1所示.它们各有不同的定位与特色,彼此的开发方式也不相同.目前,使用人数与市场占有率最高的仍是Web Form,而MVC近两年有不少技术玩家和项目采用,至于Web Pages,则是另外的Web Matrix开发工具预定的网页开发技术,它走更易于使用的开发路线. 你心里可能有疑问:"为

ASP 3.0对ASP 2.0的改进

 ASP 3.0对ASP 2.0的改进 下面的一些特征是从2.0版本中改进或升级来的. 1. 缓冲缺省为打开状态ASP提供可选的输出缓冲.从IIS 4.0开始,这使得脚本执行得更快,并提供对流向浏览器的输出的控制能力.在ASP 3.0这个改进的性能通过改变Reponse.Buffer属性的缺省设置为True而反映出来.缺省状态下缓冲是打开的,这意味着最终输出只有在进程完成时,或脚本调用Response.Flush或Response.End方法时,才送至客户端.注意,可以通过设置Response.

《圣殿祭司的ASP.NET4.0专家技术手册》----1-3 ASP.NET 4.0技术概览

1-3 ASP.NET 4.0技术概览 圣殿祭司的ASP.NET4.0专家技术手册 1-3 ASP.NET 4.0技术概览ASP.NET 4.0技术概览 ASP.NET 4.0是在ASP.NET 2.0及3.5基础上,添加了一些新技术,一方面保持适当幅度创新,另一方面也保持对旧版本的兼容与延续性.例如,图表控件的内建.Silverlight 5.ASP.NET AJAX 4.0.jQuery.C# 4.0.VB 10.F#.IronPython.IronRuby.LINQ.Entity Fram

《圣殿祭司的ASP.NET4.0专家技术手册》----2-3 C# 4.0静态基础融入动态能力

2-3 C# 4.0静态基础融入动态能力 圣殿祭司的ASP.NET4.0专家技术手册 在了解静态与动态语言后,大家直觉上可能会以为这是二元的对立,非黑即白,不是静态语言,就是动态语言.但您是否想过静态和动态之间是可以兼具或混合的可能性?例如,静态语言为获取动态语言优点,而融入了一些动态语言的功能,然后又保持静态语言的优势,如类型安全.优化.高效率. 是的,.NET 4.0正是以这个方向去改造,在原本C#.VB静态语言基础上,加上动态语言的一些特性与优势,这样就达到以静态为主,动态为辅之目的,让C