精进不休 .NET 4.0 (3) - asp.net 4.0 新特性之动态数据(Dynamic Data)增强

简介:
[索引页]
[源码下载]


精进不休 .NET 4.0 (3) - asp.net 4.0 新特性之动态数据(Dynamic Data)增强, AJAX增强; IDE之Visual Studio 2010增强


作者: webabcd


介绍
asp.net 4.0 的新增功能
动态数据(Dynamic Data)增强(之前的版本: http://webabcd.blog.51cto.com/1787395/341156 ) 
  • EnableDynamicData - 启用 Dynamic Data 的功能 
  • DynamicHyperLink - 用于方便地生成在 Dynamic Data 站点中导航的超级链接 
  • Entity Template - 实体模板是一个新增的用于自定义数据显示的模板,其基于 FormView 控件做数据呈现 
  • DisplayAttribute - 新增的一个 Attribute(可以设置字段的Name和Order) 
  • 其它新特性
AJAX 增强 
Visual Studio 2010 增强 


示例
1、Dynamic Data 之 EnableDynamicData
Demo/EnableDynamicData.aspx
<%@ Page Language= "C#" AutoEventWireup= "true" CodeBehind= "EnableDynamicData.aspx.cs" 
         Inherits= "DynamicData.Demo.EnableDynamicData" %> 

<!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> 
                <!--收集并显示由 Dynamic Data 所做的数据验证的结果--> 
                <asp:ValidationSummary ID= "ValidationSummary1" runat= "server" EnableClientScript= "true"HeaderText= "验证错误的列表" /> 

                <asp:DetailsView ID= "DetailsView1" runat= "server" AllowPaging= "True" DataKeyNames= "ProductID" 
                        DataSourceID= "EntityDataSource1"
                        <Fields> 
                                <asp:CommandField ShowDeleteButton= "True" ShowEditButton= "True" ShowInsertButton= "True" /> 
                        </Fields> 
                </asp:DetailsView> 
                <asp:EntityDataSource ID= "EntityDataSource1" runat= "server" ConnectionString= "name=AdventureWorksEntities" 
                        DefaultContainerName= "AdventureWorksEntities" EnableDelete= "True" EnableInsert= "True" 
                        EnableUpdate= "True" EntitySetName= "Products" EnableFlattening= "False"
                </asp:EntityDataSource> 
        </div> 
        </form> 
</body> 
</html> 
 
Demo/EnableDynamicData.aspx.cs
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace DynamicData.Demo 

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

void Page_Load() void Page_Load(object sender, EventArgs e) 
                { 

                } 
        } 
}
 
 
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 - 上下文的类全名 
                --> 
                <asp:DynamicHyperLink ID= "ListHyperLink" runat= "server" Text= "全部产品" Action= "List" 
                        TableName= "Products" ContextTypeName= "DynamicData.AdventureWorksEntities">    
                </asp:DynamicHyperLink> 

                <!-- 
                        生成的 HTML 代码如下: 
                        <a id= "ListHyperLink" href= "/Products/List.aspx">全部产品</a> 
                --> 
        </div> 
        </form> 
</body> 
</html> 
 
 
3、Dynamic Data 之 Entity Template
DynamicData/EntityTemplates/Products.ascx
<%@ Control Language= "C#" AutoEventWireup= "true" CodeBehind= "Products.ascx.cs"  Inherits= "DynamicData.DynamicData.EntityTemplates.Products" %> 

<!-- 
        Entity Template - 实体模板是一个新增的用于自定义数据显示的模板,其是基于 FormView 控件做数据呈现的 
        以下演示如何实现自定义的 Entity Template ,进入产品详情页可查看此 Demo 的效果 
        以下内容会被替换到 PageTemplates/Details.aspx <asp:DynamicEntity runat= "server" /> 中去 
--> 
<tr> 
        <td> 
                产品ID 
        </td> 
        <td> 
                <asp:DynamicControl ID= "DynamicControl1" runat= "server" DataField= "ProductID" /> 
        </td> 
</tr> 
<tr> 
        <td> 
                产品名称 
        </td> 
        <td> 
                <asp:DynamicControl ID= "DynamicControl2" runat= "server" DataField= "Name" /> 
        </td> 
</tr> 
 
DynamicData/EntityTemplates/Products.ascx.cs
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace DynamicData.DynamicData.EntityTemplates 

        // 自定义的 EntityTemplate 的基类是 System.Web.DynamicData.EntityTemplateUserControl 
         public partial  class Products : System.Web.DynamicData.EntityTemplateUserControl 
        { 
                 
        } 
}
 
 
4、Dynamic Data 之 DisplayAttribute
Demo/Metadata.cs
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

using System.ComponentModel.DataAnnotations; 

namespace DynamicData 

        [MetadataType(typeof(Product_Metadata))] 
         public partial  class Product 
        { 
         
        } 

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

                [Display(Name =  "产品名称", Order = 1)] 
                 public object Name {  getset; } 

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

<!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> 
        <style> 
                body 
                { 
                        font-size: 12px; 
                } 
                textarea 
                { 
                        width: 99%; 
                } 
        </style> 
</head> 
<body> 
        <form id= "form1" runat= "server"
        <div> 
                <p> 
                        1、DynamicDataManager 控件新增了 DataControls 属性,在其内可以声明多个 DataControlReference,用于指定哪些控件需要启用 Dynamic Data 的功能 
                        <textarea> 
                                <asp:DynamicDataManager ID= "DynamicDataManager1" runat= "server"AutoLoadForeignKeys= "true">    
                                        <DataControls>    
                                                <asp:DataControlReference ControlID= "GridView1" />    
                                        </DataControls> 
                                </asp:DynamicDataManager>    
                                <asp:GridView id= "GridView1" runat= "server" /> 
                        </textarea> 
                </p> 
                <p> 
                        2、新增了一个 EnumDataTypeAttribute,可以声明某字段为枚举类型。对应的字段模板里也新增了 Enumeration.ascx 和 Enumeration_Edit.ascx 
                </p> 
                <p> 
                        3、新增了两个数据类型    
                        <ul> 
                                <li>[DataType(DataType.EmailAddress)] 对应的字段模板里也新增了 EmailAddress.ascx</li> 
                                <li>[DataType(DataType.Url)] 对应的字段模板里也新增了 Url.ascx</li> 
                        </ul> 
                </p> 
                <p> 
                        4、支持多对多的关系(限 Entity Framework 模型)。对应的字段模板里也新增了 ManyToMany.ascx 和 ManyToMany_Edit.ascx 
                </p> 
                <p> 
                        5、原 Dynamic Data 会自动地将类型为 Boolean, Enumeration, ForeignKey 的字段作为查询条件输出到页面上。现在新增了 Filter Template(查询模板),可以对这些查询条件的样式和逻辑等做自定义修改(详见 DynamicData/Filters 下的文件) 
                </p> 
        </div> 
        </form> 
</body> 
</html>
 
 
6、AJAX 增强
List.html
<!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> 
        <style> 
                body 
                { 
                        font-size: 12px; 
                } 
                textarea 
                { 
                        width: 99%; 
                } 
        </style> 
</head> 
<body> 
        <p> 
                1、Visual Studio 2010 内包含了 jQuery 
        </p> 
        <p> 
                2、JavaScript 框架的 CDN 
                <ul> 
                        <li>jQuery - <script src= "http://ajax.Microsoft.com/ajax/jquery-1.3.2.js" type= "text/javascript"></script></li> 
                        <li>asp.net ajax - <asp:ScriptManager ID=”ScriptManager1” EnableCdn=” true” runat=”server” /></li> 
                </ul> 
        </p> 
        <p> 
                3、asp.net ajax 的按需加载脚本,如下所示 
                <textarea rows= "10"
<asp:ScriptManager ID= "ScriptManager1" AjaxFrameworkMode= "Explicit" runat= "server"
        <Scripts> 
                <asp:ScriptReference Name= "MicrosoftAjaxCore.js" /> 
                <asp:ScriptReference Name= "MicrosoftAjaxComponentModel.js" /> 
                <asp:ScriptReference Name= "MicrosoftAjaxSerialization.js" /> 
                <asp:ScriptReference Name= "MicrosoftAjaxNetwork.js" />         
        </Scripts> 
</asp:ScriptManager> 
                </textarea> 
        </p> 
</body> 
</html> 
 
 
7、Visual Studio 2010 增强
<%@ Page Title= "" Language="C# " MasterPageFile="~/Site.Master " AutoEventWireup=" true
        CodeBehind= "List.aspx.cs"  Inherits= "VisualStudio.List" %> 

<asp:Content ID= "Content1" ContentPlaceHolderID= "head" runat= "server"
        <style> 
                body 
                { 
                        font-size: 12px; 
                } 
                textarea 
                { 
                        width: 99%; 
                } 
        </style> 
</asp:Content> 
<asp:Content ID= "Content2" ContentPlaceHolderID= "ContentPlaceHolder1" runat= "server"
        <p> 
                1、HTML 和 JavaScript 支持 Code Snippets(代码片段) 
                <ul> 
                        <li>组合键 ctrl+k ctrl+x 用于插入代码片段</li> 
                        <li>组合键 ctrl+k ctrl+b 用于调出代码片段管理器</li> 
                        <li> 
                                比如要在 HTML 的代码片段中增加一个 fieldset 的代码片段,可参考如下写法,将其保存为 snippet 格式的文件保存到“我的文档\Visual Studio 2010\Code Snippets\Visual Web Developer\My HTML Snippets” 
                                <textarea rows= "6"
<CodeSnippet Format= "1.1.0" xmlns= "http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"
        <Header> 
                <Title>fieldset</Title> 
                <Author>webabcd</Author> 
                <Shortcut>fieldset</Shortcut> 
                <Description>Markup snippet  for a fieldset</Description> 
                <SnippetTypes> 
                        <SnippetType>Expansion</SnippetType> 
                        <SnippetType>SurroundsWith</SnippetType> 
                </SnippetTypes> 
        </Header> 
        <Snippet> 
                <Declarations> 
                        <Literal> 
                                <ID>legend</ID> 
                                <ToolTip>legend</ToolTip> 
                                <Default>标题</Default> 
                        </Literal> 
                        <Literal> 
                                <ID>content</ID> 
                                <ToolTip>content</ToolTip> 
                                <Default>content</Default> 
                        </Literal> 
                </Declarations> 
                <Code Language= "html"
                        <![CDATA[<fieldset> 
                                <legend>$legend$</legend> 
                                <div> 
                                        $content$ 
                                </div> 
                        </fieldset>$ end$]]> 
                </Code> 
        </Snippet> 
</CodeSnippet> 
                                </textarea> 
                        </li> 
                </ul> 
        </p> 
        <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> 
 
 





     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/341172 ,如需转载请自行联系原作者
相关文章
|
6月前
|
关系型数据库 MySQL 数据库
找不到请求的 .Net Framework Data Provider。可能没有安装
做的一个项目,框架为.net framework 数据库为mysql 出现如标题错误 检查是否安装mysql、是否安装mysql connector net 笔者是因为没有安装后者mysql connector net 下载地址: [mysql connector net](https://downloads.mysql.com/archives/c-net/ "mysql connector net") 笔者安装截图如下: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/c
61 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
6月前
|
SQL 开发框架 监控
|
7月前
|
开发框架 前端开发 .NET
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
177 0
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
|
8月前
|
存储 开发框架 .NET
ASP.NET学生管理系统(.NET毕业设计)
ASP.NET学生管理系统(.NET毕业设计)
100 0
|
SQL 开发框架 .NET
在ASP.NET中使用ListView控件对数据进行显示、分页和排序
在ASP.NET中使用ListView控件对数据进行显示、分页和排序
在ASP.NET中使用ListView控件对数据进行显示、分页和排序
|
开发框架 .NET 数据库连接
在ASP.NET中分页显示DataList控件中的数据
在ASP.NET中分页显示DataList控件中的数据
在ASP.NET中分页显示DataList控件中的数据
|
SQL 存储 开发框架
ASP.NET 使用语言集成查询 LINQ进行数据访问
ASP.NET 使用语言集成查询 LINQ进行数据访问
ASP.NET 使用语言集成查询 LINQ进行数据访问
|
存储 开发框架 NoSQL
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
284 0
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
|
开发框架 JSON 前端开发
ASP.NET MVC5----常见的数据注解和验证
ASP.NET MVC5----常见的数据注解和验证
300 0
ASP.NET MVC5----常见的数据注解和验证