[hackday] Мастер-класс ie9 и dynamic data
DESCRIPTION
Презентация с мастер-класса на Hackday, на котором было рассказано о новых возможностях Internet Explorer 9 и быстром создании форм для редактирования данных на ASP.NET Dynamic Data.TRANSCRIPT
HTML 5, IE9ASP.NET Dynamic Data
Гайдар МагдануровMicrosoft
e: [email protected] | t: @gaidar | m: +7 (905) 5045716
Новые возможности
Новый движок JavaScript “Chakra”
Исходный код
Парсер ASTИнтерпре-
таторБайт-код
Интерактивный процесс
Фоновый процессКомпилят
орНативны
й код
Компиляция В фоне Многопоточность
Поддержка стандартов
Рабочая группа HTML
Рабочая группа W3C
Основная группа
тестирования HTML 5
Сравнение разметки
6
HTML 5Часто называют так набор HTML 5 и CSS3
Новые медиа-возможности (canvas, видео, аудио, встроенный SVG…)
Поведение современных браузеров
1100 страниц черновика HTML 5
ASP.NET Dynamic Data
Источник данных Модель данных Мета-данные
Кастомизация Dynamic Data
Шаблоны страниц (PageTemplates)
Шаблоны полей (FieldTemplates)
Типы данных (UIHint)
Страницы
DynamicField/DynamicControl
Маршрутизация
routes.Add( new DynamicDataRoute("{table}/{action}.aspx"){ Constraints= new RouteValueDictionary( new { action= "List|Details|Edit|Insert" }),Model= model});
routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") { Action= PageAction.List,ViewName= "ListDetails", Model= model});
routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx"){ Action= PageAction.Details, ViewName= "ListDetails",Model= model});
Контролы и страницы
<asp:CalendarID="Calendar1" runat="server“SelectedDate="<%# (FieldValue!=null)? FieldValue:DateTime.Now%>" VisibleDate="<%# (FieldValue!=null)? FieldValue:DateTime.Now%>"</asp:Calendar>
Применение мета-данных
using System;using System.ComponentModel.DataAnnotations;
[MetadataType(typeof(EmployeeMetadata))]public partial class Employee{}
public class EmployeeMetadata{[UIHint("DateTimeCalendar")]public objectHireDate{ get; set; }}
Валидация
public class CustomerMetadata{[Required()]public object Title;}
public partial class Customer {
partial void OnTitleChanging(string value) { if(!Char.IsUpper(value[0])) {throw new ValidationException(“!!!"); } } }
Валидация
public partial class Employee{ partial void OnValidate(System.Data.Linq.ChangeAction action){ if(action== System.Data.Linq.ChangeAction.Insert)) { if(this._BirthDate.Value.CompateTo(DateTime.Now)>0) throw new ValidationException(“!!!”); } }}
РесурсыОфициальные сайты• http://ie.microsoft.com/testdrive/• http://www.beautyoftheweb.com/• http://www.asp.net/dynamicdata• http://www.codeplex.com/aspnet
Блоги• http://blogs.msdn.com/davidebb/• http://blogs.msdn.com/marcinon/• http://blogs.msdn.com/scothu/• http://weblogs.asp.net/scottgu• http://www.hanselman.com/blog/