技术开发 频道

ASP.NET Web Forms 4.5新特性(一)

        【IT168 技术】在微软线上发布了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:

ASP.NET Web Forms 4.5新特性(一)

  使用强类型绑定数据:

ASP.NET Web Forms 4.5新特性(一)

  Bundling

  不怎么好翻译,类似于资源文件的压缩包,索性不翻译它了。我们知道Web性能优化的一个主要的方法就是减少HTTP请求。由此才出现了css sprite、压缩CSS/JS的工具,目的都是为了尽量减少HTTP的请求。之前.NET框架下会有很多的第三方框架,微软也出过一个Microsoft Ajax Minifier,而这次在ASP.NET Web Forms 4.5中,索性直接添加了此功能,多了一个叫做Bundle的类。

public class BundleConfig
     {
        
// For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254726
         public static void RegisterBundles(BundleCollection bundles)
         {
             bundles.Add(
new ScriptBundle("~/bundles/WebFormsJs").Include(
                  
"~/Scripts/WebForms/WebForms.js",
                  
"~/Scripts/WebForms/WebUIValidation.js",
                  
"~/Scripts/WebForms/MenuStandards.js",
                  
"~/Scripts/WebForms/Focus.js",
                  
"~/Scripts/WebForms/GridView.js",
                  
"~/Scripts/WebForms/DetailsView.js",
                  
"~/Scripts/WebForms/TreeView.js",
                  
"~/Scripts/WebForms/WebParts.js"));

             bundles.Add(
new ScriptBundle("~/bundles/jquery").Include(
                    
"~/Scripts/jquery-{version}.js"));

             bundles.Add(
new ScriptBundle("~/bundles/MsAjaxJs").Include(
                
"~/Scripts/WebForms/MsAjax/MicrosoftAjax.js",
                
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js",
                
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js",
                
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"));

             bundles.Add(
new StyleBundle("~/Content/themes/base/css").Include(
                  
"~/Content/themes/base/jquery.ui.core.css",
                  
"~/Content/themes/base/jquery.ui.resizable.css",
                  
"~/Content/themes/base/jquery.ui.selectable.css",
                  
"~/Content/themes/base/jquery.ui.accordion.css",
                  
"~/Content/themes/base/jquery.ui.autocomplete.css",
                  
"~/Content/themes/base/jquery.ui.button.css",
                  
"~/Content/themes/base/jquery.ui.dialog.css",
                  
"~/Content/themes/base/jquery.ui.slider.css",
                  
"~/Content/themes/base/jquery.ui.tabs.css",
                  
"~/Content/themes/base/jquery.ui.datepicker.css",
                  
"~/Content/themes/base/jquery.ui.progressbar.css",
                  
"~/Content/themes/base/jquery.ui.theme.css"));
         }
     }

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

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

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

        使用。

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

        压缩前后请求数对比。

  压缩合并前:

ASP.NET Web Forms 4.5新特性(一)

  压缩后:

ASP.NET Web Forms 4.5新特性(一)

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

0
相关文章