开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

精进不休 .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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ASP.NET4.0新特性
原文: ASP.NET4.0新特性 在以前试用VS2010的时候已经关注到它在Web开发支持上的一些变化了,为此我还专门做了一个ppt,当初是计划在4月12日那天讲的,结果因为莫名其妙的原因导致没有语音以致放弃在LiveMeeting上的这次讲课,也导致了本篇的产生。
978 0
ASP.NET 3.5 开发大全DOC版
电驴上的资料,我把他传到我的网站上了,呵呵。。 不过这个空间好像是不能用做下载站的吧。。 估计人下一多就下不了了。。。 下载地址:http://niunan.net/download/NET35DEVELop.rar
556 0
C#+Asp.net系列教程
本教程参考C#和ASP.NET程序设计教程撰写,有什么不足之处请大家指出,或在老猫的理想BLOG留言。   首先讲解一下c#,这里只是粗略的讲解,详细内容请购买相关书籍,或参阅相关文档。c#已经取消了c++中的指针,并且在c++中大量被使用的操作符(:: ->)已经不在出现,c#中指支持一个"."。
1020 0
DynamicData for Asp.net Mvc留言本实例 下篇 更新
我并不打算再建一个edit页来实现更新,而打算用现有的create页来实现更新功能 虽然也许这样并不符合其语义,但我仍想这么做,因为asp那时候大家都是把增删改查放在一个页面的只用参数来区别 如: article?m=add article?m=modfiy article?m=delete 由于控件的流行,细节被Asp.
737 0
一起谈.NET技术,ASP.NET MVC 3 Beta初体验之超酷的Chart:3D效果
  在前一篇文章:ASP.NET MVC 3 Beta初体验之超酷的Chart中介绍了Chart的使用,但是没有介绍到3D效果。这篇文章将介绍一下Chart的3D效果的展示。声明一点的是:这个Chart控件可能没有一些开源或者不开源,收费或者不收费的组件那般强大,我相信未来这个控件会越来越强大的。
909 0
关于ASP.NET预编译(转自dudu)
为什么要用预编译? 博客园博客程序中.aspx和.ascx文件总共加起来有3000多个(博客模板中有大量的.ascx文件)。如果使用动态编译,每次只要更新bin文件夹中的任何一个dll文件,动态编译至少需要5分钟(访问量越高,所需的编译时间越长),而在动态编译期间网站访问速度极慢,几乎就是无法正常访问。
878 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载