#眉標=Enterprise Library、ASP.NET 3.5、Master-Details #副標=設計模型套件系列(19) #大標=建立ASP.NET 3.5動態資料模型 #作者=文/圖 王寧疆 ===<反灰>============= model.RegisterContext(typeof(DataClassesDataContext), new ContextConfiguration() { ScaffoldAllTables = true }); ================ ===<反灰>============= [Table(Name="dbo.Products")] [System.ComponentModel.DataAnnotations.ScaffoldTable(true)] public partial class Product : INotifyPropertyChanging, INotifyPropertyChanged { } ================ ===<反灰>============= 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 }); ================ ===<反灰>============= using System.ComponentModel.DataAnnotations; ================ ===<反灰>============= public partial class Product { partial void OnUnitPriceChanging(decimal? value) { if (value <= 0) //如果欄位的內容值小於或等於0 { throw new ValidationException("UnitPrice必須大於0!"); //引發資料驗証失敗的例外 } } } ================ ===<反灰>============= partial void OnValidate(System.Data.Linq.ChangeAction action) { if (!char.IsUpper(this._ProductName[0])) throw new ValidationException("ProductName的第一個字元必須大寫!"); } ================ ===<反灰>============= [MetadataType(typeof(ProductMetaData))] ================ ===<反灰>============= public class ProductMetaData { [StringLength(10, ErrorMessage = "ProductName長度不可以超過10個字元!")] public object ProductName; [DisplayFormat(DataFormatString = "{0:C}")] public object UnitPrice { get; set; } } ================ ===<反灰>============= using System.ComponentModel.DataAnnotations; ================ ===<反灰>============= [MetadataType(typeof(OrderDetailsMetaData))] public partial class Order_Detail { } ================ ===<反灰>============= public class OrderDetailsMetaData { [Range(1, 100, ErrorMessage = "訂購數量必須介於 {1} ~ {2}之間!")] public object Quantity { get; set; } } ================ ===<反灰>============= using System.ComponentModel.DataAnnotations; ================ ===<反灰>============= [MetadataType(typeof(OrderMetaData))] public partial class Order { } ================ ===<反灰>============= public class OrderMetaData { [DataTypeAttribute(DataType.Date)] public object OrderDate { get; set; } } ================