Afficher un tableau/liste de données de façon dynamique dans MVC3/Rasoir à partir d'un JsonResult?
J'ai une page d'affichage, les utilisateurs.cshtml. Et j'ai un JsonResult méthode d'action, jsongetusers() qui renvoie la liste des utilisateurs au format json.
Sur les utilisateurs.cshtml de chargement de la page, je souhaite obtenir la liste des utilisateurs, construire un tableau et l'afficher. Quelle est la meilleure façon de mettre en œuvre cette ASP.Net MVC à l'aide de Rasoir? Je suis assez nouveau à MVC3 et Rasoir. Ma première pensée a été d'une boucle sur le résultat json et de construire un tableau à l'aide de javascript/jquery et l'ajouter à la DOM. Mais je suppose que il doit y avoir une meilleure façon de le faire?
Grâce.
- Pourquoi voulez-vous utiliser une autre méthode d'action que les utilisateurs de la page pour remplir la liste? Ce sera plus lente et nécessite deux demandes plutôt qu'un seul.
- Pour le chargement initial de la page, je n'ai pas besoin de deux. Mais lorsque la pagination dans la liste des utilisateurs, j'ai besoin de charger la liste des utilisateurs de manière asynchrone. J'ai pensé pourquoi ne pas appeler la même fonction pour le chargement initial trop.
- Les réponses ci-dessous répondu à votre problème?
Vous devez vous connecter pour publier un commentaire.
Comme Mystère de l'Homme a suggéré, d'obtenir une vue d'abord et puis de nouveau faire un appel ajax à nouveau pour obtenir le résultat json est inutile dans ce cas. c'est-à 2 appels au serveur. Je pense que vous pouvez retourner directement un tableau HTML des Utilisateurs dans le premier appel.
Nous allons le faire de cette façon. Nous aurons une vue fortement typée, qui sera de retour le balisage de la liste d'utilisateurs du navigateur, et cette donnée est fournie par une méthode d'action qui nous permettra d'appeler à partir de notre navigateur à l'aide d'une requête http.
Ont un ViewModel pour l'Utilisateur
et dans votre contrôleur de disposer d'une méthode pour obtenir une liste des Utilisateurs
En supposant que UserService.GetUsers() la méthode renverra une Liste de UserViewModel objet qui représente la liste des usres dans votre source de données (Tables)
et de vos utilisateurs.cshtml ( qui est en Vues/dossier Utilisateur),
Tous Ensemble maintenant, vous pouvez accéder à l'url comme
yourdomain/User/List
et il vous donnera une liste d'utilisateurs dans une table HTML.Si vous avez vraiment besoin pour aller de cette façon, alors c'est ce que vous pouvez faire. Il y a probablement de meilleures façons de le faire, mais c'est tout ce que j'ai en ce moment. Je n'ai pas d'appels de base de données, j'ai simplement utilisé des données factices. Veuillez modifier le code pour l'adapter à votre scénario. J'ai utilisé
jQuery
pour remplir laHTML table
.Dans mon contrôleur, j'ai l'd'une méthode d'action appelé
GetEmployees
qui renvoie unJSON result
avec tous les employés. C'est là que vous appelez votre référentiel pour renvoyer les utilisateurs à partir d'une base de données:L'Utilisateur de la classe ressemble à ceci:
Dans votre vue, vous pourriez avoir le suivant:
Concernant le code ci-dessus:
var url = '/Home/GetEmployees';
Home
est le contrôleur etGetEmployees
est la méthode de l'action que vous avez défini ci-dessus.J'espère que cette aide.
Mise à JOUR:
C'est la façon dont je l'aurais fait..
J'ai toujours de créer un modèle de vue de la classe pour une vue. Dans ce cas, je l'aurais appelé quelque chose comme
UserListViewModel
:Dans mon contrôleur, je voudrais remplir cette liste des Utilisateurs à partir d'un appel à la base de données de renvoyer tous les utilisateurs:
Et à mon avis j'aurais suivantes:
Ajouter une Vue:
Ajouter un contrôleur et une méthode d'action à l'appel de la vue:
La manière normale de faire c'est:
Vous n'avez pas besoin d'un JsonResult ou jQuery pour cela.
Vous pouvez le faire facilement avec le KoGrid plugin pour KnockoutJS.
Exemple