天天看点

Dot Net FrameWork 4.0 学习笔记(3)

    睡的迷迷糊糊了,突然想起来今天刚要记录的学习笔记还有更新,哎,,爬起来弄完再睡吧...   

    今天的笔记沿上节记录继续往下,今天内容有

    1,动态数据(Dynamic Data)增强(之前的版本:大家可以去google或msdn一下)

    (1).EnableDynamicData - 启用 Dynamic Data 的功能  

    (2).DynamicHyperLink - 用于方便地生成在 Dynamic Data 站点中导航的超级链接  

    (3).Entity Template - 实体模板是一个新增的用于自定义数据显示的模板,其基于 FormView 控件做数据呈现  

    (4).DisplayAttribute - 新增的一个 Attribute(可以设置字段的Name和Order)

    (5).其它新特性

    2,AJAX 增强

    3,Visual Studio 2010 增强

    ASP.NET 动态数据允许您通过在运行时从数据库架构推断数据实体的外观和行为并从中派生 UI 行为,创建可扩展的、数据驱动的 Web 应用程序。

    动态数据支持基架,通过基架可以为数据库中的每个表自动生成网页。 基架使您可以基于数据架构创建用于查看和编辑数据的功能性网站。 您可以轻松地自定义基架元素,或者创建新元素以重写默认行为。

    您还可以无需使用基架直接在现有或新的 Web 应用程序中启用动态行为。在这种情况下,需要指定动态数据应如何以及何时在不需要整个网站的基架的情况下

  动态数据体系结构

    摘自MSDN关于动态数据描述

    说白了,其上所谈到的ASP.NET动态数据为根据路由信息,让我们的Web应用程序可以动态的做一些CRUD的简单数据库操作及关联表自定义操作,还可以将我们的字段罗列出来做一个模板功能,那么下一次再用到此类控件,那么其上的表现样式会和我们定义的逻辑一致,当然还可以做动态数据验证,甚至类型验证等等操作。

    动态数据项目目录结构一览 

    动态数据的起始点,根据以上路由信息开始了第一步

    一个list+details的显示列表

    根据外键属性而来的字段关联修改

    结合数据实体所做的字段验证或类型验证

    当然所介绍的这些并不是本节的重点,我们所关注的是4.0中动态数据增强了什么 /微笑

    (1). EnableDynamicData 为控件启用动态数据

    protected void Page_Init()

    {

        /*

        * EnableDynamicData - 启用 Dynamic Data 的功能(包括字段模板,数据验证在内的等等 Dynamic Data 的功能都会被启用)

        *     第一个参数:需要启用Dynamic Data 功能的实体类型

        *     第二个参数:当控件启用插入模板的时候,为字段指定默认值

        */

        DetailsView1.EnableDynamicData(typeof(EmployeeInfo));

    }

    (2). DynamicHyperLink 动态链接标签

    <!--

        DynamicHyperLink - 用于方便地生成在 Dynamic Data 站点中导航的超级链接

            Action - 指定 Action(可选值有 List|Details|Edit|Insert)

            TableName - 需要链接到的目标表名

            ContextTypeName - 上下文的类全名

             当然在实际操作中我们可能仅需提供Action就可以了,因为其余两项路由已经

             帮我们注册了

    -->

    <asp:DynamicHyperLink ID="dynamicLink"runat="server"Text="全部员工信息" Action="List"

        TableName="EmployeeInfo" ContextTypeName="DynamicData.HrmsEntities"> 

    </asp:DynamicHyperLink>

        生成的 HTML 代码如下:

        <a id="ListHyperLink"href="/Products/List.aspx">全部产品</a>

    (3). Entity Template 实体模板

    在4.0中新增加了实体模板项,这样一来对于Details或者Insert,Edit的操作就有了更多的定制化,更多的可控性。当然此模板目前仅对FromView适用

    <!—FormView模板-->

    <asp:FormView runat="server"ID="FormView1" DataSourceID="DetailsDataSource"DefaultMode="Edit"

    OnItemCommand="FormView1_ItemCommand"OnItemUpdated="FormView1_ItemUpdated"RenderOuterTable="false">

    <EditItemTemplate>

       <table id="detailsTable" class="DDDetailsTable"cellpadding="6">

           <asp:DynamicEntity runat="server" Mode="Edit"/>

           <tr class="td">

               <td colspan="2">

                <asp:LinkButtonrunat="server" CommandName="Update" Text="更新"/>

                <asp:LinkButtonrunat="server" CommandName="Cancel" Text="取消"CausesValidation="false" />

               </td>

           </tr>

       </table>

    </EditItemTemplate>

    <EmptyDataTemplate>

       <div class="DDNoItem">无此类项。</div>

    </EmptyDataTemplate>

    </asp:FormView> 

    <!—实体项模板-->

    <asp:EntityTemplaterunat="server" ID="EntityTemplate1">

       <ItemTemplate>

               <td class="DDLightHeader">

                    <asp:Labelrunat="server" OnInit="Label_Init"OnPreRender="Label_PreRender" />

               <td>

                    <asp:DynamicControlrunat="server" ID="DynamicControl" Mode="Edit"OnInit="DynamicControl_Init" />

       </ItemTemplate>

    </asp:EntityTemplate>

    之后就是后台代码,在一些特定事件中完成动态加载列表信息或呈现列表的操作

    (4). DisplayAttribute 进行显示视图信息文本的命名过程,很简单的display的name,order属性

    (5),其他新特性

    ①,DynamicDataManager 控件新增了 DataControls 属性,在其内可以声明多个 DataControlReference,用于指定哪些控件需要启用 Dynamic Data 的功能,当然这样的方式我们在init事件通过设置控件的EnableDynamicData也可以完成  

     <asp:DynamicDataManager ID="DynamicDataManager1" runat="server" AutoLoadForeignKeys="true"> 

          <DataControls> 

             <asp:DataControlReference ControlID="GridView1" /> 

          </DataControls>

     </asp:DynamicDataManager> 

     <asp:GridView id="GridView1" runat="server" />

    ②,新增了一个 EnumDataTypeAttribute,可以声明某字段为枚举类型。对应的字段模板里也新增了 Enumeration.ascx 和 Enumeration_Edit.ascx (如下图所示)

    ③,新增了两个数据类型 

    [DataType(DataType.EmailAddress)] 对应的字段模板里也新增了 EmailAddress.ascx

    [DataType(DataType.Url)] 对应的字段模板里也新增了 Url.ascx

     ④,支持多对多的关系(限 Entity Framework 模型).对应的字段模板里也新增了 ManyToMany.ascx 和 ManyToMany_Edit.ascx

     ⑤,原 Dynamic Data 会自动地将类型为 Boolean, Enumeration, ForeignKey 的字段作为查询条件输出到页面上。现在新增了 Filter Template(查询模板),可以对这些查询条件的样式和逻辑等做自定义修改,如3,4两张图所示,我们这关联列表可以由我们自己做主了  

    2,AJAX增强

    1,Visual Studio 2010 内包含了 jQuery , 当然如果安装2008SP1补丁+Jquery的话2008也是可以的

            2,JavaScript 框架的 CDN , 在这样一个细小的细节上更能体现出设计者的心思,真是用心良苦

        jQuery - <script src="http://ajax.Microsoft.com/ajax/jquery-1.3.2.js" type="text/javascript"></script>

        asp.net ajax - <asp:ScriptManager ID=”ScriptManager1” EnableCdn=”true” runat=”server” />

            3,asp.net ajax 的按需加载脚本,如下所示

    <asp:ScriptManager ID="ScriptManager1" AjaxFrameworkMode="Explicit" runat="server">

    <Scripts>

         <asp:ScriptReference Name="MicrosoftAjaxCore.js" />

         <asp:ScriptReference Name="MicrosoftAjaxSerialization.js" />

    </Scripts>

    </asp:ScriptManager>

    3,IDE 2010的增强

    工欲善其事必先利其器,作为一个开发者这玩意肯定才是神器

    ①,HTML 和 JavaScript 支持 Code Snippets(代码片段)  常用的代码片段就可以放入其中方便管理

            组合键 ctrl+k ctrl+x 用于插入代码片段

            组合键 ctrl+k ctrl+b 用于调出代码片段管理器

    ②、根据不同配置生成不同版本的 Web.config 文件

            在 Web.config 文件点右键,选择 “Add Config Transforms”,可生成不同配置的 Web.config 文件(生成包的时候,按哪种配置生成则生成哪种配置的 Web.config 文件)

            默认有两种配置,即 Debug 和 Release ,可以在 Build -> Configuration Manager 中做 新增/删除/修改/更新 配置的操作

   ③、智能提示的改进。比如在对象后面“点”属性的时候,它将根据已输入的字母做筛选。例:如果在 TextBox 对象后键入 text, 则智能提示只会显示 Text, TextChanged, TextMode(以前会把对象的所有属性、方法、事件都列出来)

   ④、将光标放到某一个标识上的时候,则该页所有使用了此标识的地方都会被 IDE 突出显示出来

   ⑤、新增了一个开发环境配置 - Code Optimized ,在此模式下只有 html 编辑视图,而没有设计视图。在第一次启动 Visual Studio 2010 的时候,可以选择开发环境配置。以后如果需要修改开发环境配置,可以在此处操作:工具 > 导入/导出设置 > 重置所有选项

   ⑥、在项目属性中新增了两个选项卡,Package/Publish Web 和 Package/Publish SQL,分别用于生成 Web 包和 SQL 包

    嗯,终于把第三节的内容整理完毕,,下节为命名参数和可选参数 ,动态数据绑定,协变与逆变,新增的线程同步类

继续阅读