ASP.NET Web Forms 4.5的新特性(一):强类型数据控件和Bundling

在微软线上发布了Visual Studio 2012后,我们也能清晰地看到ASP.NET Web Forms 4.5中的一些新特性了。

今天先看两个新特性:强类型数据控件和Bundling。

强类型数据控件

在出现强类型数据控件前,我们绑定数据控件时,前台一般使用Eval或者DataBinder.Eval(Container.DataItem,"FieldName")的形式。

1 <%# DataBinder.Eval(Container.DataItem, " FieldName ") %>
2 <%# Eval( " FieldName ") %>

而在ASP.NET Web Forms 4.5中出现了强类型数据控件,可以后台绑定数据的控件多了个属性:ItemType

当指定了控件的ItemType后就可以在前台使用强类型绑定数据了。

指定ItemType。

使用强类型绑定数据。

届时园子里估计又要掀起一番争论ORM的风潮 :)

Bundling

不怎么好翻译,类似于资源文件的压缩包,索性不翻译它了。

我们知道Web性能优化的一个主要的方法就是减少HTTP请求,详细可见YSlow里面的Minimize HTTP Requests

由此才出现了css sprite、压缩CSS/JS的工具,目的都是为了尽量减少HTTP的请求。

之前.NET框架下会有很多的第三方框架,微软也出过一个Microsoft Ajax Minifier,我也曾经也过一篇文章介绍过。

而这次在ASP.NET Web Forms 4.5中,索性直接添加了此功能,多了一个叫做Bundle的类。

 1  public  class BundleConfig
 2     {
 3          //  For more information on Bundling, visit  http://go.microsoft.com/fwlink/?LinkId=254726
 4           public  static  void RegisterBundles(BundleCollection bundles)
 5         {
 6             bundles.Add( new ScriptBundle( " ~/bundles/WebFormsJs ").Include(
 7                    " ~/Scripts/WebForms/WebForms.js ",
 8                    " ~/Scripts/WebForms/WebUIValidation.js ",
 9                    " ~/Scripts/WebForms/MenuStandards.js ",
10                    " ~/Scripts/WebForms/Focus.js ",
11                    " ~/Scripts/WebForms/GridView.js ",
12                    " ~/Scripts/WebForms/DetailsView.js ",
13                    " ~/Scripts/WebForms/TreeView.js ",
14                    " ~/Scripts/WebForms/WebParts.js "));
15 
16             bundles.Add( new ScriptBundle( " ~/bundles/jquery ").Include(
17                      " ~/Scripts/jquery-{version}.js "));
18 
19             bundles.Add( new ScriptBundle( " ~/bundles/MsAjaxJs ").Include(
20                  " ~/Scripts/WebForms/MsAjax/MicrosoftAjax.js ",
21                  " ~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js ",
22                  " ~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js ",
23                  " ~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js "));
24 
25             bundles.Add( new StyleBundle( " ~/Content/themes/base/css ").Include(
26                    " ~/Content/themes/base/jquery.ui.core.css ",
27                    " ~/Content/themes/base/jquery.ui.resizable.css ",
28                    " ~/Content/themes/base/jquery.ui.selectable.css ",
29                    " ~/Content/themes/base/jquery.ui.accordion.css ",
30                    " ~/Content/themes/base/jquery.ui.autocomplete.css ",
31                    " ~/Content/themes/base/jquery.ui.button.css ",
32                    " ~/Content/themes/base/jquery.ui.dialog.css ",
33                    " ~/Content/themes/base/jquery.ui.slider.css ",
34                    " ~/Content/themes/base/jquery.ui.tabs.css ",
35                    " ~/Content/themes/base/jquery.ui.datepicker.css ",
36                    " ~/Content/themes/base/jquery.ui.progressbar.css ",
37                    " ~/Content/themes/base/jquery.ui.theme.css "));
38         }
39     }

Bundle还支持将CSS压缩的文件配置写在config文件里,使得维护更加方便,同时也支持CDN和文件通配符等。

可以通过在Application_Start里注册配置。

1  void Application_Start( object sender, EventArgs e)
2 {
3     BundleConfig.RegisterBundles(BundleTable.Bundles);
4 }

使用。

1  <% : Scripts.Render( " ~/bundles/modernizr " %>
2  <% : Scripts.Render( " ~/bundles/jquery " %>
3  <% : Scripts.Render( " ~/bundles/jqueryui " %>

压缩前后请求数对比(图片来源)。

压缩合并前。

压缩后。

这样,当此属性成为了ASP.NET自带的一个功能后,我们只需要很简单地配置就可以实现优化准则里面的“减少掉HTTP请求数”这一条了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevOpenClub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值