Y a-t-il un bon moyen de créer un modèle d'affichage tabulaire dans ASP.NET MVC3 avec la nouvelle syntaxe de rasoir? P>
dans asp.net mvc 2 phil haack blogging sur Modèles d'affichage tabulaires . Y a-t-il une meilleure approche dans ASP.NET MVC3? P>
EDIT: P>
est-il également possible de rendre la grille sur la base des métadonnées EDIT:
Il y a donc une bonne pratique pour créer des grilles utilisant des métadonnées de modèle? P>
7 Réponses :
Vous pouvez regarder le nouvelle aide WebGrid . P>
J'ai mis à jour ma question. WebGrid Helper semble être très moche à utiliser des métadonnées de modèle :( Stackoverflow.com/Questtions/4874544/...
Vous pouvez utiliser la nouvelle webgrid dans mvc3: et vous pouvez utiliser des onglets JQuery: http://jqueryui.com/demos/tabs , pour créer des pages à tabulation. P> Désolé si je suis mal compris votre question. p> p>
tabulaire = table aussi loin que je sais :)
@Rookian, je crains que ... :)
L'utilisation de l'assistant WebGrid semble être cauchemar ... Stackoverflow.com/Questions/4874544/...
Vous pouvez également envisager d'utiliser les composants Telerik Grid et Tabstrip MVC, vérifier Leurs démos . p>
Je ne l'ai pas beaucoup utilisé mais de ma compréhension, vous devez d'abord configurer la webgrid de MVC 3 avant de l'utiliser. Et vous ne voulez pas configurer la table dans la vue, mais le faire à l'aide des attributs de modèle. P>
Si je vais faire ce que je ferais ce qui suit: p>
Créez mes attributs personnalisés avec lesquels je décorerais mon modèle pour définir les propriétés des colonnes, quelles étiquettes seront utilisées pour l'en-tête de colonne et tout ce que vous souhaitez configurer. p> li>
Je ferai une classe statique avec une méthode statique qui prendra dans votre instance de modèle, utilise la réflexion pour lire les propriétés et vos attributs personnalisés et de là, il crachera de la bande WebGride à utiliser à votre vue. p> li> ul>
C'est le comment mais je vais vous dire pourquoi je ne ferais pas cela: en MVC, vous décorez votre modèle pour des choses comme la validation et qui est excellente et déclarante. Mais lorsque vous définissez une grille, c'est une chose très spécifique. Bien sûr, vous pouvez utiliser les images de vue qui sont spécifiques mais je ne pense pas que la configuration de la mise en page appartient au modèle. La manière dont webgrid ou la grille de Telerik avant son fonctionnement est déjà joliment déclarante déjà. P>
I Short WebGrid et Telerik's Grid utilisent déjà les meilleures pratiques en proposant des interfaces déclaratives et courantes pour définir la structure de table et le comportement. Chaque table est différente, il est donc logique que vous définissez chaque table. Vous dites "à la main", mais c'est loin de l'affaire, car les grilles font tout le travail sale pour vous, vous le direz simplement de ce que vous voulez (programmation déclarative). P>
L'utilisation du modèle métadonnées semble avoir plus d'inconvénients que des avantages pour moi. Par exemple, l'utilisation de l'attribut pour l'affichage du texte est laide lorsque vous devez prendre en charge l'internationalisation (mults langues).
@Rookian: Utiliser des attributs de texte pour la localisation n'est pas laid. Malheureusement pour Pre-MVC 3, vous deviez spécifier votre propre implémentation de l'attribut Data en héritant à partir de DisplayAttribute et en récupérant la chaîne à partir d'un fichier de ressources (je passe le type de ressource et la clé de ressource en tant que paramètres). Cela prend 10 minutes pour écrire une fois et peut être réutilisé. Heureusement, cela a été résolu dans MVC 3 avec prise en charge de la surcharge de DisplayAttribute (Revouroissey, ResourceType) qui a été ignorée en raison de dates contradictoires entre la libération MVC 2 et les attributs de décoration de modèle.
J'aime Modèles de jQuery beaucoup. Vous avez juste besoin de passer un objet JSON et le reste du travail. bon pour le tri, la pagination, etc. p>
Phil HAACK a écrit un article vraiment cool d'un blog sur les délégués de rasoir modèles. L'assistant HTML qu'il écrit est simple et léger. P>
http://haacked.com/archive/2011/ 02/27 / Templated-Razor-Délégats.aspx P>
vient de trouver cette réponse à la recherche d'une solution similaire. J'espérais également quelque chose de réutilisable cependant, alors fini par créer un simple modèle basé sur la réponse de Kalman, il ressemble à ceci:
Vue / DisplayTemplates / Table.Cshtml Strong> P> @Html.DisplayForModel("Table")
Cela s'est avéré être une jolie solution boiteuse. Le WebGrid ne prend pas en charge les annotations de données qui le rend très limité. Je vais le laisser ici au cas où il est utile de quelqu'un d'autre
Jetez un coup d'œil à la grille MVC Open Source de Telerik, source , Demo .
Est-il autorisé à utiliser la grille dans un projet commercial non open source :)?
"Si vous utilisez Telerik Extensions pour ASP.NET MVC Open Source GPL, vous êtes obligé de suivre les droits de redistribution, comme indiqué dans la GPL V2.0. Si vous avez acheté une licence commerciale Telerik pour ASP.NET MVC, vous pouvez re -Distribuer le produit Telerik dans le cadre de votre application sans la nécessité de partager le code source de votre application. Voir les termes de la licence. " Telerik.com/Purchse/faqs/aspnet-mvc.aspx
Ok donc ce n'est pas une option pour moi.