2009-03-20 5 views
1

Supposons que vous aviez un objet configGénérer une forme d'un objet poco

public class MyConfig{ 
public int PageSize{get;set;} 
public string Title{get;set;} 
} 

et que vous voulez générer automatiquement un formulaire asp.net pour modifier les propriétés de cet objet. Connaissez-vous des cadres pour le faire automagiquement?

Je connais les données MS Dynamic, mais il me semble que j'ai besoin de toute la pile (base de données, linq, objets) pour que cela fonctionne. Donc je pensais à quelque chose de plus simple ..

Répondre

1

J'avais l'impression que vous pouviez modifier les modèles T4 utilisés par les données dynamiques (Vous ne savez pas si vous pouvez supprimer la partie d'accès aux données).

Avez-vous regardé simplement en utilisant T4 seul.

2

Désolé de sauter en retard. Il existe plusieurs façons d'utiliser Dynamic Data avec POCO.

  1. Utilisez le DynamicObjectDataSource qui se trouve dans Futures et versions preview de données dynamiques, à partir de juillet 2008 à terme. Lorsque vous recherchez dans une version d'aperçu, il contient un assembly Futures, Microsoft.Web.DynamicData.dll. Lorsque vous utilisez ASP.NET 4.0 (maintenant en version bêta), vous pouvez appeler une nouvelle méthode d'extension, EnableDynamicData(). Voir le projet "SimpleDynamicDataSamples" fourni avec DD Preview 4 et versions ultérieures.

Voici un exemple de ce code qui utilise une ObjectDataSource et la classe POCO appelée "Product".

[MetadataType(typeof(Product.Metadata))] 
public partial class Product { 
    public class Metadata { 
     [Required] 
     public string ProductName { get; set; } 
     [Range(0, 100)] 
     public decimal UnitPrice { get; set; } 
    } 
} 

public partial class ObjectDataSourceSample : System.Web.UI.Page { 
    protected void Page_Init() { 
     // Extension method syntax 
     ProductsList.EnableDynamicData(typeof(Product)); 

     // Explicit syntax 
     // MetaTable table = MetaTable.CreateTable(typeof(Product)); 
     // MetaTable.MapControl(ProductsList, table); 
     // ProductsList.ColumnsGenerator = new DefaultAutoFieldGenerator(table); 
    } 
} 
Questions connexes