8
votes

ASP.NET MVC 2 Annotations de données dans un modèle généré dynamiquement

Je crée une application ASP.NET MVC 2 générant mon modèle de vue de manière dynamique en fonction de l'entrée de l'utilisateur. Mettez simplement, l'utilisateur est capable de choisir quels champs il souhaite voir à sa vue.

Étant donné que les aides modèles reposent fortement sur des propriétés et des attributs de modèle (annotations de données), j'aurais besoin d'ajouter d'une manière ou d'une autre ajouter les attributs au modèle d'affichage pendant l'exécution. Pas besoin de dire que ce n'est pas une tâche simple.

Alors, que vous recommandez-vous de faire dans ce scénario? Je ne suis pas capable d'ajouter les attributs statiquement, alors devrais-je aller de l'avant et essayer de les ajouter de manière dynamique même si cela fait beaucoup de travail ou devrais-je essayer d'utiliser une approche différente?

Merci d'avance!

felipe


0 commentaires

3 Réponses :


0
votes

sonne comme surkill (si je comprends bien correctement) - qui crée des modèles à la volée. Vous n'utilisez pas le principal avantage d'avoir des modèles; Compilez les chèques de temps.

J'essaierais d'utiliser des objets spécifiques à la tâche (par exemple, une classe d'UserForm qui aurait une liste de classes UserFormfields, etc.) à la main et ne les crée pas à la volée. < p> EDIT: Ce que je suggère est de pas Utiliser une validation basée sur l'attribut et concevoir votre modèle avec validation à l'esprit. Un design comme ci-dessous pourrait expliquer mon argument mieux: xxx


1 commentaires

C'est presque comment mon modèle ressemble à mon modèle. Une collection de champs contenant des données. Le problème est que je n'ai aucune information sur ces champs au moment de la compilation. Je dois interroger la base de données et obtenir des informations dans les champs et ils remplissent leurs attributs.



0
votes

On dirait que vous auriez besoin d'un classeur de modèle personnalisé qui applique la validation de manière dynamique.


0 commentaires

3
votes

Un classeur de modèle personnalisé ne vous aiderait que dans la partie contraignante. Cela ne vous aidera pas avec les aides modèles ou d'autres caractéristiques de ASP.NET MVC.

Je recommande d'écrire un fournisseur de métadonnées personnalisé en héritant de ModelmetadataProvider et enregistrement de votre fournisseur dans global.asax en utilisant ModelmetadataProviders . Un fournisseur de métadonnées personnalisés peut obtenir ses métadonnées de partout où il souhaite: Attributs CLR, fichier XML, base de données ou un générateur de nombres aléatoires. Le fournisseur d'annotations de données intégré utilise bien sûr des attributs CLR.

Vous voudrez peut-être examiner le code source du fournisseur de métadonnées d'annotations de données intégrées pour voir un exemple de comment mettre en œuvre un fournisseur. Vous pouvez télécharger le code source ASP.NET MVC 2 RC 2 de Le site Codéplex . Il pourrait également y avoir une mise en œuvre dans le projet MVC Futures, mais je ne suis pas sûr.


0 commentaires