[索引页]
[源码下载]

无敌进不休 .NET 4.0 (3) – asp.net 4.0 新特征的动态数据(Dynamic Data)增强,
AJAX增强; IDE之Visual Studio 2010增强

作者:webabcd

介绍
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

jQuery 1jQuery 2代码

<%@ 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"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
<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

jQuery 3jQuery 4代码

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

jQuery 5jQuery 6代码

<%@ 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"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
<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

jQuery 7jQuery 8代码

<%@ 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

jQuery 9jQuery 10代码

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

jQuery 11jQuery 12代码

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

jQuery 13jQuery 14代码

<%@ 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"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
<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

jQuery 15jQuery 16代码

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
<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 增强

jQuery 17jQuery 18代码

<%@ 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"&gt;
    <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
[源码下载]

相关文章

网站地图xml地图