Wednesday, 18 June 2008

ASP.NET Dynamic Data - New Feature in ASP.NET 3.5 SP1


After attending NxtGenUG Fest 08 last week in my old office at Microsoft UK HQ, Thames Valley Park, I was particularly excited to hit the ground running with a topic presented by Dave Sussman, ASP.NET Dynamic Data.

This is a new feature in the yet to be released SP1 for .NET 3.5. (A beta is available here - this is pre-release so use on a VM or spare machine)

Dynamic Data is a scaffolding framework - what does this mean? Well this is how Scott Guthrie describes it:

.NET 3.5 SP1 adds support for a rich ASP.NET data "scaffolding" framework that enables you to quickly build functional data-driven web application. With the ASP.NET Dynamic Data feature you can automatically build web UI (with full CRUD - create, read, update, delete - support) against a variety of data object models (including LINQ to SQL, LINQ to Entities, REST Services, and any other ORM or object model with a dynamic data provider).

SP1 adds this new functionality to the existing GridView, ListView, DetailsView and FormView controls in ASP.NET, and enables smart validation and flexible data templating options. It also delivers new smart filtering server controls, as well as adds support for automatically traversing primary-key/foreign-key relationships and displaying friendly foreign key names - all of which saves you from having to write a ton of code.


I think of this scaffolding framework as DataBinding 2.0 - to get a good idea of what Dynamic Data is, I recommend watching this video from David Ebbo.

Now, the awesome thing about Dynamic Data is that it doesn't have to work on just a Data Model generated from a database or LINQ datasource. It can work against a business object using the ObjectDataSource approach - this is an amazing ability to save time getting features such as validation, column typing, display names and descriptions etc piped into your application for free.

For an integration project I have been working on where I generate business objects using an ASP.NET build provider, and then databind them against custom controls, I can now get rid of the following things:
  • A proprietary ValidationFramework
  • Custom column type mappings
  • Custom attributes on my business objects
  • Custom BoundFields
  • Custom DetailsView and GridView controls (which use the mappings and custom BoundFields)
...and instead I simply modify the build provider to decorate my class with the expected Dynamic Data attributes, and use the "DynamicObjectDataSource" from the latest samples pack.

Example business object:


public class NewData {
  [RegularExpression(@"[A-Z].*", ErrorMessage="The name must start with an upper case character")]
  [Required]
  [DisplayName("The name")]
  public string Name { get; set; }

  [Range(0, 1000)]
  [UIHint("IntegerSlider")]
  [DefaultValue(345)]
  public int Number { get; set; }

  [DataType(DataType.Date)]
  [UIHint("DateAjaxCalendar")]
  [Required]
  public DateTime Date { get; set; }
}


Here is the ASPX declaration:

<asp:ValidationSummary ID="ValidationSummary1"
  runat="server"
  EnableClientScript="true"
  HeaderText="List of validation errors" />

<asp:dynamicvalidator runat="server"
  id="DetailsViewValidator"
  controltovalidate="DetailsView1"
  display="None">

<asp:DetailsView ID="DetailsView1"
  runat="server"
  AllowPaging="True"
  AutoGenerateInsertButton="True"
  DataSourceID="ObjectDataSource1"
  EnableModelValidation="true">
</asp:DetailsView>

<asp:DynamicObjectDataSource ID="ObjectDataSource1"
  runat="server"   DataObjectTypeName="DynamicDataExtensionsSample.NewData"
  InsertMethod="Insert"
  SelectMethod="Select"
  TypeName="DynamicDataExtensionsSample.AggregateData">
</asp:DynamicObjectDataSource>


...from that, a DetailsView control loads showing the correct data, using the correct client side controls (which can be completely customised) based on the data type, with enforced validation using automatically generated validators.

Now for some handy links:

Dynamic Data Website
Dynamic Data Forum
MSDN Documentation


This really is an awesome new technology. Expect to see more about this on my blog soon.

Many thanks to David Ebbo from the ASP.NET team for helping me out with Dynamic Data.

5 comments:

Ice Dragon said...

Bạn cần giao hàng đến cho khách. Bạn cần tìm sử dụng dịch vụ giao hàng tận nơi. Yêu cầu của bạn về chất lượng và giá cả rất khắc khe. Đa số các công ty khác đều không làm bạn hài lòng.
Hãy đến với Proship chúng tôi, đảm bảo bạn sẽ hài lòng. Với các dịch vụ vận chuyển như: chuyển hàng ra đà nẵng, cho thuê kho bãi, ký gửi hàng hóa, chuyển hàng đi Hà Nội.
Đặc biệt hệ thống kho của chúng tôi đều thực hành tốt bảo quản thuốc tốt và đạt chuẩn gsp. Hãy thử sử dụng dịch vụ đảm bảo bạn sẽ hài lòng.

prathap kumar said...

Great Article

ASP.NET Training
ASP NET Training
ASP.NET Online Training
Dot Net Training in Chennai
.Net Online Training
.net training online
Dot Net Online Training
C# Training

kanchana said...

Your blog is more useful and informative..Keep on blogging..
PHP training in chennai

An Binh said...

Ngày nay việc tìm mua bàn làm việc văn phòng rất đơn giản vì thị trường nội thất văn phòng ngày càng phát triển nhiều xưởng sản xuất cho ra nhiều mẫu mã sản phẩm đa dạng với giá cả khác nhau nên việc chọn mua bàn văn phòng giá rẻ như thế nào tại đâu hiệu quả tốt nhất giúp đáp ứng nhu cầu sử dụng. Hiện này khi chọn mua nội thất văn phòng thường với xu hướng chọn ghế chân sắt hoặc inox, bàn làm việc chọn loại bàn gỗ. Sự kết hợp của vật liệu kim loại và tự nhiên giúp căn phòng có sự hài hòa và trong đẹp mắt hơn. Hơn nữa việc chọn ghế chân sắt - inox cũng góp phần giảm thiểu được một khoảng chi phí khi loại ghế này có giá rẻ hơn khá nhiều so với ghế làm bằng gỗ, vì với chi phí thuê hay mua một văn phòng làm việc tại TPHCM là không hề rẻ nên cần phải tính toán chi tiêu hợp lý. Ngoài ra, hầu như tất cả văn phòng đều được đặt ở những tòa nhà cao tầng nên việc vận chuyển ghế gỗ khó khắn hơn rất nhiều do có trọng lượng nặng đáng kể. Cho nên khi chọn mua sản phẩm nội thất văn phòng giá rẻ tphcm nhừ bàn ghế hay tủ bạn nên chú ý đến văn phòng của mình vị trí nào đễ dễ cho việc di chuyển sau này. Cho nên khi bạn có nhu cầu chọn mua những mẫu ban lam viec van phong nên cân nhắc đến các vấn đề về: Phong thủy, kích thước diện tích văn phòng, phối màu và sự phối hợp liên quan tới các sản phẩm nội thất khác trong văn phòng đặc biệt là sự di chuyển , bảo hành trong quá trình sử dụng.

Duong Qua said...

Cùng ngành với nhau vui vậy, bên bạn có nha xe van chuyen hang hoa Ha Tinh, giá chuyển hàng từ sài gòn ra Nha Trang, chuyển hàng hoá ra Khánh Hoà giá rẻ không. Bên mình có lap dat thang may gia dinh 450kg, giá thang máy bệnh viện, lap dat thang may tai hang 5 tan cần chuyển hàng từ hcm đi Vinh để cung cấp cho dự án he thong bai do xe thong minh, vậy bên bạn có cước vận tải rẻ không?