当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET4.0新改进和新特性

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 344 ::
收藏到网摘: n/a

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的设置等,我们将在后面的文章里一一详解。

让我们欢呼吧!