• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
[索引页]
[源码下载]


精进不休 .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
代码
<%@ 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 >全部产品</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(
1100, 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>
</

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net忘记密码—通过email找回密码发布时间:2022-07-10
下一篇:
Asp.Net文件处理发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap