ASP.NET 3.5 Extensions新特性:ASP.NET Dynamic Data 体验 【转】

 

概述

ASP.NET 3.5 Extensions CTP包含了一个新特性是“ASP.NET Dynamic Data Support(动态数据支持)”,它允许我们不用编写一行代码极其快速地建造使用LINQ to SQL对象模型的数据驱动的网站。

创建ASP.NET Dynamic Data站点

安装完ASP.NET 3.5 Extensions后,可以在新建项目对话框中看到一项Dynamic Data WebSite:

创建完成后,项目结构如下:

 

TerryLee_DynamicData_002

在解决方案中会有一个App_Shared文件夹,下面有DynamicDataFields和DynamicDataPages等子文件夹,这里面放的都是些模板文件,可以通过这些模板文件来定制网站的外观,这个下一篇再说。

添加数据模型

添加一个LINQ to SQL文件,以Petshop4的数据库为例:

TerryLee_DynamicData_003

启用动态数据模板

打开Web.config,找到dynamicData一节,设置enableTemplates属性为true,默认为false。

TerryLee_DynamicData_004

运行站点

1.运行站点后,在默认的主页上列出了在数据模型中添加的所有数据表:

TerryLee_DynamicData_005

2.点击Categories进入,为我们生成了一个列表界面,显示出Categories中的数据,并且自动根据外键关系,显示了Products一列,可以导航到Category对应的Product,同时

TerryLee_DynamicData_006

3.内置的分页支持,同时显示出可以选择每页显示的记录数:

TerryLee_DynamicData_007

4.根据主外键自动列出筛选条件:

TerryLee_DynamicData_008

5.编辑界面自动列出Supplier供选择:

TerryLee_DynamicData_009

6.自动生成的新增数据界面:

TerryLee_DynamicData_010

7.内置的数据验证支持:

TerryLee_DynamicData_011

结束语

看了上面的效果,是不是有些心动,赶快体验一下吧:),在ASP.NET Dynamic Data体验下篇中学习如何进一步定制网站。

 

 

 

概述

ASP.NET 3.5 Extensions新特性:ASP.NET Dynamic Data 体验(上)一文中简单的展示了一下ASP.NET Dynamic Data生成的数据视图网页效果,在这一篇中,看一下如何更进一步定制我们的网站。

定制网站外观

首先从最简单的开始定制,在网站下有一个MasterPage.master三个CSS样式文件,可以先从这里下手,修改网站的整体外观。如简单修改一下MasterPage,使其看起来如下所示:

TerryLee_DynamicData_012

自定义动态数据视图

自定义动态数据视图,可以修改App_Shared/DynamicDataPages下的页面来实现,如可以修改一下ListDetailsTemplate.aspx,为页面中的每部分加上一个标题:

TerryLee_DynamicData_014

除此之外,我们可以针对特定的表进行数据视图的定制,在网站下添加一个Products文件夹(注意与表名必须相同),并添加一个ListDetail.aspx页面,在页面不显示Detail信息,这时候再打开Products时,显示的页面中没有了Detail信息:

TerryLee_DynamicData_013

URL的访问方式是~/{table}/{viewName}.aspx,在Web.config中指定:

<dynamicData dataContextType="" enableTemplates="true">
  <mappings queryStringKeyPrefix="" pattern="~/{table}/{viewName}.aspx">
    <add actions="list,details" viewName="ListDetails" templateFile="ListDetailsTemplate.aspx" />
    <!--
      <add actions="list" viewName="List" templateFile="ListTemplate.aspx" />
      <add actions="details" viewName="Details" templateFile="DetailsTemplate.aspx" />
    -->
    <!--
      Special overriding cases
      <add actions="list,details" tables="Products,Categories" viewName="SpecialName" templateFile="ListTemplate.aspx"/>
      <add actions="list" tables="Products" templateFile="DetailsTemplate.aspx" path="~/customPath.aspx"/>
      <add actions="list" tables="Orders" viewName="MyListViewName"/>
    -->
  </mappings>
</dynamicData>
</system.web.extensions>

自定义动态数据字段

自定义动态数据字段,可以通过修改App_Shared/DynamicDataFields下的用户控件来实现,如打开Text_Edit.ascx,为其中的TextBox添加一个背景色:

<asp:TextBox ID="TextBox1" runat="server" Text='<%# DataValue %>' BackColor="#FDDCBF"></asp:TextBox>

 

再运行网站,进行数据编辑时可以看到:

TerryLee_DynamicData_015

自己创建动态数据字段

除了使用上面的方法自定义动态数据字段之外,还可以自己创建动态数据字段,在App_Shared/DynamicDataFields下添加一个Dynamic Data Field:

TerryLee_DynamicData_016

可以看到控件继承于FieldTemplateUserControlBase类,在其中添加一个Label控件,并设置它的前景色为红色:

<%@ Control Language="C#" Inherits="System.Web.DynamicData.FieldTemplateUserControlBase" %>

<asp:Label id="CurrentValueID" runat="server"
    Text='<%# DataValueString %>' ForeColor="#FF0000">  
</asp:Label>

 

关联数据表中的字段和控件,需要添加一个pratial类,使用RenderHint特性来指定,第一个参数是字段,第二个参数是与其相关联的控件:

[RenderHint("Status", "StatusControl")]
public partial class Item
{

}

然后再运行网站,进入Item数据视图,可以看到Status的前景色都变成了红色:

TerryLee_DynamicData_017

自定义数据验证

在ASP.NET Dynamic Data中内置支持数据验证,我们也可以进行自定义的数据验证。同样是添加一个pratial类,内置的验证特性有Range、Regex、Require三个,如下代码所示:

using System;
using System.Web.DynamicData;

[Range("Qty", 100, 1000,
    ErrorMessage = "Qty必须在{1}和{2}之间")]
public partial class Inventory
{

}

在运行时如果输入小于100或者大于1000将会给出提示信息:

TerryLee_DynamicData_018

如果使用使用上面的几个特性还不够的话,你也可以使用LINQ to SQL中的局部方法OnPropertyChanging来进行验证,如下代码所示

public partial class Product 
{
    partial void OnProductNameChanging(string value) 
    {
      if (!Char.IsUpper(value[0])) {
        throw new Exception("Product name must start with an uppercase letter.");}
    }
}

 

结束语

关于ASP.NET 3.5 Extensions中的新特性动态数据支持就用两篇文章介绍到这里,后续文章再介绍其他的特性。

 

作者: TerryLee
出处: http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

 

转载于:https://www.cnblogs.com/kingjiong/archive/2010/02/22/1671062.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值