免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3101 | 回复: 0
打印 上一主题 下一主题

[C++] NET 4.0 (3) - asp.net 4.0 新特性之动态数据(Dynamic Data)增强, AJAX增强; [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-25 20:19 |只看该作者 |倒序浏览
本帖最后由 __Sherry__ 于 2011-03-25 20:28 编辑

介绍
asp.net 4.0 的新增功能
动态数据(Dynamic Data)增强(之前的版本:http://www.cnblogs.com/webabcd/archive/2009/02/23/1396212.html

EnableDynamicData - 启用 Dynamic Data 的功能  
DynamicHyperLink - 用于方便地生成在 Dynamic Data 站点中导航的超级链接  
Entity Template - 实体模板是一个新增的用于自定义数据显示的模板,其基于 FormView 控件做数据呈现  
DisplayAttribute - 新增的一个 Attribute(可以设置字段的Name和Order)  
其它新特性
AJAX 增强
Visual Studio 2010 增强


示例
1、Dynamic Data 之 EnableDynamicData
Demo/EnableDynamicData.aspx

代码
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EnableDynamicData.aspx.cs"
  2.     Inherits="DynamicData.Demo.EnableDynamicData" %>

  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head runat="server">
  6.     <title></title>
  7. </head>
  8. <body>
  9.     <form id="form1" runat="server">
  10.     <div>
  11.         <!--收集并显示由 Dynamic Data 所做的数据验证的结果-->
  12.         <asp:ValidationSummary ID="ValidationSummary1" runat="server" EnableClientScript="true" HeaderText="验证错误的列表" />

  13.         <asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" DataKeyNames="ProductID"
  14.             DataSourceID="EntityDataSource1">
  15.             <Fields>
  16.                 <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" />
  17.             </Fields>
  18.         </asp:DetailsView>
  19.         <asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=AdventureWorksEntities"
  20.             DefaultContainerName="AdventureWorksEntities" EnableDelete="True" EnableInsert="True"
  21.             EnableUpdate="True" EntitySetName="Products" EnableFlattening="False">
  22.         </asp:EntityDataSource>
  23.     </div>
  24.     </form>
  25. </body>
  26. </html>


  27. Demo/EnableDynamicData.aspx.cs
复制代码
代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;

  7. namespace DynamicData.Demo
  8. {
  9.     public partial class EnableDynamicData : System.Web.UI.Page
  10.     {
  11.         protected void Page_Init()
  12.         {
  13.             /*
  14.              * EnableDynamicData - 启用 Dynamic Data 的功能(包括字段模板,数据验证在内的等等 Dynamic Data 的功能都会被启用)
  15.              *     第一个参数:需要启用 Dynamic Data 功能的实体类型
  16.              *     第二个参数:当控件启用插入模板的时候,为字段指定默认值
  17.              */
  18.             DetailsView1.EnableDynamicData(typeof(Product), new { Name = "默认名称" });
  19.         }

  20.         protected void Page_Load(object sender, EventArgs e)
  21.         {

  22.         }
  23.     }
  24. }
复制代码
2、Dynamic Data 之 DynamicHyperLink
Demo/DynamicHyperLinkDemo.aspx
代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DynamicHyperLinkDemo.aspx.cs"
    Inherits="DynamicData.Demo.DynamicHyperLinkDemo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!--
            DynamicHyperLink - 用于方便地生成在 Dynamic Data 站点中导航的超级链接
                Action - 指定 Action(可选值有 List|Details|Edit|Insert)
                TableName - 需要链接到的目标表名
                ContextTypeName - 上下文的类全名
        -->
        <aspynamicHyperLink ID="ListHyperLink" runat="server" Text="全部产品" Action="List"
            TableName="roducts" ContextTypeName="DynamicData.AdventureWorksEntities">
        </aspynamicHyperLink>

        <!--
            生成的 HTML 代码如下:
            <a id="ListHyperLink" href="/Products/List.aspx">全部产品</a>
        -->
    </div>
    </form>
</body>
</html>



3、Dynamic Data 之 Entity Template
DynamicData/EntityTemplates/Products.ascx
代码
  1. <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Products.ascx.cs" Inherits="DynamicData.DynamicData.EntityTemplates.Products" %>

  2. <!--
  3.     Entity Template - 实体模板是一个新增的用于自定义数据显示的模板,其是基于 FormView 控件做数据呈现的
  4.     以下演示如何实现自定义的 Entity Template ,进入产品详情页可查看此 Demo 的效果
  5.     以下内容会被替换到 PageTemplates/Details.aspx <asp:DynamicEntity runat="server" /> 中去
  6. -->
  7. <tr>
  8.     <td>
  9.         产品ID
  10.     </td>
  11.     <td>
  12.         <asp:DynamicControl ID="DynamicControl1" runat="server" DataField="ProductID" />
  13.     </td>
  14. </tr>
  15. <tr>
  16.     <td>
  17.         产品名称
  18.     </td>
  19.     <td>
  20.         <asp:DynamicControl ID="DynamicControl2" runat="server" DataField="Name" />
  21.     </td>
  22. </tr>

  23. DynamicData/EntityTemplates/Products.ascx.cs
  24. 代码
  25. using System;
  26. using System.Collections.Generic;
  27. using System.Linq;
  28. using System.Web;
  29. using System.Web.UI;
  30. using System.Web.UI.WebControls;

  31. namespace DynamicData.DynamicData.EntityTemplates
  32. {
  33.     // 自定义的 EntityTemplate 的基类是 System.Web.DynamicData.EntityTemplateUserControl
  34.     public partial class Products : System.Web.DynamicData.EntityTemplateUserControl
  35.     {
  36.         
  37.     }
  38. }


  39. 4、Dynamic Data 之 DisplayAttribute
  40. Demo/Metadata.cs
  41. 代码
  42. using System;
  43. using System.Collections.Generic;
  44. using System.Linq;
  45. using System.Web;

  46. using System.ComponentModel.DataAnnotations;

  47. namespace DynamicData
  48. {
  49.     [MetadataType(typeof(Product_Metadata))]
  50.     public partial class Product
  51.     {
  52.    
  53.     }

  54.     public class Product_Metadata
  55.     {
  56.         // DisplayAttribute - 新增的一个 Attribute
  57.         //     Name - 指定字段的名称(参考 Demo/EnableDynamicData.aspx ,其“ProductID”字段显示为“产品ID”)
  58.         //     Order - 指定字段在所有字段中的排序
  59.         [Display(Name="产品ID", Order=0)]
  60.         public object ProductID { get; set; }

  61.         [Display(Name = "产品名称", Order = 1)]
  62.         public object Name { get; set; }

  63.         [Range(1, 100, ErrorMessage="{0}的范围必须是{1}-{2}")]
  64.         [Display(Name = "单价", Order = 2)]
  65.         public object ListPrice;
  66.     }
  67. }
复制代码
5、Dynamic Data 之 其它新特性
Demo/Others.aspx
代码
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Others.aspx.cs" Inherits="DynamicData.Demo.Others" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title></title>
  6.     <style>
  7.         body
  8.         {
  9.             font-size: 12px;
  10.         }
  11.         textarea
  12.         {
  13.             width: 99%;
  14.         }
  15.     </style>
  16. </head>
  17. <body>
  18.     <form id="form1" runat="server">
  19.     <div>
  20.         <p>
  21.             1、DynamicDataManager 控件新增了 DataControls 属性,在其内可以声明多个 DataControlReference,用于指定哪些控件需要启用 Dynamic Data 的功能
  22.             <textarea>
  23.                 <asp:DynamicDataManager ID="DynamicDataManager1" runat="server" AutoLoadForeignKeys="true">
  24.                     <DataControls>
  25.                         <asp:DataControlReference ControlID="GridView1" />
  26.                     </DataControls>
  27.                 </asp:DynamicDataManager>
  28.                 <asp:GridView id="GridView1" runat="server" />
  29.             </textarea>
  30.         </p>
  31.         <p>
  32.             2、新增了一个 EnumDataTypeAttribute,可以声明某字段为枚举类型。对应的字段模板里也新增了 Enumeration.ascx 和 Enumeration_Edit.ascx
  33.         </p>
  34.         <p>
复制代码
3、新增了两个数据类型
  1. <ul>
  2.                 <li>[DataType(DataType.EmailAddress)] 对应的字段模板里也新增了 EmailAddress.ascx</li>
  3.                 <li>[DataType(DataType.Url)] 对应的字段模板里也新增了 Url.ascx</li>
  4.             </ul>
  5.         </p>
  6.         <p>
  7.             4、支持多对多的关系(限 Entity Framework 模型)。对应的字段模板里也新增了 ManyToMany.ascx 和 ManyToMany_Edit.ascx
  8.         </p>
  9.         <p>
复制代码
5、原 Dynamic Data 会自动地将类型为 Boolean, Enumeration, ForeignKey 的字段作为查询条件输出到页面上。现在新增了 Filter Template(查询模板),可以对这些查询条件的样式和逻辑等做自定义修改(详见 DynamicData/Filters 下的文件)
  1. </p>
  2.     </div>
  3.     </form>
  4. </body>
  5. </html>



  6. 6、AJAX 增强
  7. List.html

  8. 代码
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml">
  11. <head runat="server">
  12.     <title></title>
  13.     <style>
  14.         body
  15.         {
  16.             font-size: 12px;
  17.         }
  18.         textarea
  19.         {
  20.             width: 99%;
  21.         }
  22.     </style>
  23. </head>
  24. <body>
  25.     <p>
  26.         1、Visual Studio 2010 内包含了 jQuery
  27.     </p>
  28.     <p>
  29.         2、JavaScript 框架的 CDN
  30.         <ul>
  31.             <li>jQuery - &lt;script src="http://ajax.Microsoft.com/ajax/jquery-1.3.2.js" type="text/javascript"&gt;&lt;/script&gt;</li>
  32.             <li>asp.net ajax - &lt;asp:ScriptManager ID=”ScriptManager1” EnableCdn=”true” runat=”server” /&gt;</li>
  33.         </ul>
  34.     </p>
  35.     <p>
复制代码
3、asp.net ajax 的按需加载脚本,如下所示
  1. <textarea rows="10">
  2. <asp:ScriptManager ID="ScriptManager1" AjaxFrameworkMode="Explicit" runat="server">
  3.     <Scripts>
  4.         <asp:ScriptReference Name="MicrosoftAjaxCore.js" />
  5.         <asp:ScriptReference Name="MicrosoftAjaxComponentModel.js" />
  6.         <asp:ScriptReference Name="MicrosoftAjaxSerialization.js" />
  7.         <asp:ScriptReference Name="MicrosoftAjaxNetwork.js" />   
  8.     </Scripts>
  9. </asp:ScriptManager>
  10.         </textarea>
  11.     </p>
  12. </body>
  13. </html>
复制代码
7、Visual Studio 2010 增强
代码
  1. <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
  2.     CodeBehind="List.aspx.cs" Inherits="VisualStudio.List" %>

  3. <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
  4.     <style>
  5.         body
  6.         {
  7.             font-size: 12px;
  8.         }
  9.         textarea
  10.         {
  11.             width: 99%;
  12.         }
  13.     </style>
  14. </asp:Content>
  15. <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
  16.     <p>
  17.         1、HTML 和 JavaScript 支持 Code Snippets(代码片段)
  18.         <ul>
  19.             <li>组合键 ctrl+k ctrl+x 用于插入代码片段</li>
  20.             <li>组合键 ctrl+k ctrl+b 用于调出代码片段管理器</li>
  21.             <li>
  22.                 比如要在 HTML 的代码片段中增加一个 fieldset 的代码片段,可参考如下写法,将其保存为 snippet 格式的文件保存到“我的文档\Visual Studio 2010\Code Snippets\Visual Web Developer\My HTML Snippets”
  23.                 <textarea rows="6">
  24. <CodeSnippet Format="1.1.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  25.     <Header>
  26.         <Title>fieldset</Title>
  27.         <Author>webabcd</Author>
  28.         <Shortcut>fieldset</Shortcut>
  29.         <Description>Markup snippet for a fieldset</Description>
  30.         <SnippetTypes>
  31.             <SnippetType>Expansion</SnippetType>
  32.             <SnippetType>SurroundsWith</SnippetType>
  33.         </SnippetTypes>
  34.     </Header>
  35.     <Snippet>
  36.         <Declarations>
  37.             <Literal>
  38.                 <ID>legend</ID>
  39.                 <ToolTip>legend</ToolTip>
  40.                 <Default>标题</Default>
  41.             </Literal>
  42.             <Literal>
  43.                 <ID>content</ID>
  44.                 <ToolTip>content</ToolTip>
  45.                 <Default>content</Default>
  46.             </Literal>
  47.         </Declarations>
  48.         <Code Language="html">
  49.             <![CDATA[<fieldset>
  50.                 <legend>$legend$</legend>
  51.                 <div>
  52.                     $content$
  53.                 </div>
  54.             </fieldset>$end$]]>
  55.         </Code>
  56.     </Snippet>
  57. </CodeSnippet>
  58.                 </textarea>
  59.             </li>
  60.         </ul>
  61.     </p>
  62.     <p>
复制代码
2、根据不同配置生成不同版本的 Web.config 文件
        <ul>
            <li>在 Web.config 文件点右键,选择 “Add Config Transforms”,可生成不同配置的 Web.config 文件(生成包的时候,按哪种配置生成则生成哪种配置的 Web.config 文件)</li>
            <li>默认有两种配置,即 Debug 和 Release ,可以在 Build -> Configuration Manager 中做 新增/删除/修改/更新 配置的操作</li>
        </ul>
    </p>
    <p>
        3、智能提示的改进。比如在对象后面“点”属性的时候,它将根据已输入的字母做筛选。例:如果在 TextBox 对象后键入 text, 则智能提示只会显示 Text, TextChanged, TextMode(以前会把对象的所有属性、方法、事件都列出来)
    </p>
    <p>
        4、将光标放到某一个标识上的时候,则该页所有使用了此标识的地方都会被 IDE 突出显示出来
    </p>
    <p>
        5、新增了一个开发环境配置 - Code Optimized ,在此模式下只有 html 编辑视图,而没有设计视图。在第一次启动 Visual Studio 2010 的时候,可以选择开发环境配置。以后如果需要修改开发环境配置,可以在此处操作:Tools > Import & Export Settings > Reset all settings option
    </p>
    <p>
        6、在项目属性中新增了两个选项卡,Package/Publish Web 和 Package/Publish SQL,分别用于生成 Web 包和 SQL 包
    </p>
</asp:Content>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP