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

[源码下载]


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


作者: webabcd


介绍
asp.net 4.0 的新增功能
  • 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
    {
        
protected   void  Page_Init()
        {
            
/*
             * EnableDynamicData - 启用 Dynamic Data 的功能(包括字段模板,数据验证在内的等等 Dynamic Data 的功能都会被启用)
             *     第一个参数:需要启用 Dynamic Data 功能的实体类型
             *     第二个参数:当控件启用插入模板的时候,为字段指定默认值
             
*/
            DetailsView1.EnableDynamicData(
typeof (Product),  new  { Name  =   " 默认名称 "  });
        }

        
protected   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 {  get set ; }

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

        [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 -  &lt; script src="http://ajax.Microsoft.com/ajax/jquery-1.3.2.js" type="text/javascript" &gt;&lt; /script &gt; </ li >
            
< li > asp.net ajax -  &lt; asp:ScriptManager ID=”ScriptManager1” EnableCdn=”true” runat=”server” / &gt; </ 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 >


OK
[源码下载]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值