天天看點

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 包

    嗯,終于把第三節的内容整理完畢,,下節為命名參數和可選參數 ,動态資料綁定,協變與逆變,新增的線程同步類

繼續閱讀