ASP.NET MVC C#: intégrer des données provenant de plusieurs tables/requêtes en vue
Ok, je suis toujours obtenir le coup de l'asp.net et le framework MVC et la conversion de ma connaissance au cours de l'ASP classique et VB - alors, soyez doux.
J'ai eu mon premier point de vue (/home/détails/X) fonctionne bien grâce à l'aide précédente de me pointer dans la bonne direction, maintenant, j'ai besoin d'ajouter des données à partir de plusieurs tables et des requêtes/vues MVC vue (je déteste ça SQL et MVC à la fois d'utiliser le mot vue de significations différentes).
Je ne suis pas à la recherche de quelqu'un pour écrire la réponse pour moi (sauf si elles sentez vraiment énergique), d'autant plus que quelqu'un pour me pointer dans la bonne direction de ce que je devrais être à la recherche et à la lecture sur de la comprendre et de la faire moi-même.
Mon problème
Il y a de multiples ensembles de données dont j'ai besoin d'afficher dans cette vue, et de chaque jeu de données a une bonne PK/FK 1-M relation établie, et la résultante de ces dossiers devra être bouclé.
Comment j'aurais fait cela auparavant
Dans mon classique ASP jours, j'aurais défini la requête SQL à la tête de la page où les données ont été à être utilisé, avec une instruction select, le long des lignes de:
SELECT * FROM query_name
WHERE query_uniquecolumnname = Request.QueryString("value")
Une fois cette opération effectuée, vous définissez le faire alors que query_name PAS BOF/expressions du FOLKLORE, puis déposer dans les noms de champ vous vouliez partir de cette requête et il a été fait.
Comment puis-je réaliser cela maintenant?
Donc, le transfert rapide de mon ASP classique de la connaissance, comment puis-je obtenir le même résultat avec MVC?
Les tables/vues je souhaite utiliser sont déjà définies au sein de mon modèle de données (et les relations sont présents dans il y qui je suppose est un plus), j'ai juste besoin de savoir comment je pouvais l'appeler à l'intérieur de la page et utiliser l'ID de l'enregistrement affiché dans la vue Détails pour s'assurer que seuls des données affichées.
Merci d'avance
OriginalL'auteur thewinchester | 2009-08-06
Vous devez vous connecter pour publier un commentaire.
Le concept que vous cherchez est appelé un ViewModel. Essentiellement, c'est une classe personnalisée que vous écrivez qui contient toutes les données qui pourrait être utilisée dans votre point de vue. Donc, il est responsable de la fusion des données de tous les différentes tables et de les exposer comme des propriétés. Si vous êtes à l'aide d'une couche d'accès aux données, il est souvent aussi simple que d'apporter un peu d'entités ensemble. Si vous utilisez SQL brut de le faire, alors vous pouvez exécuter vos requêtes lorsque les propriétés ont été consultés.
Ensuite de vous faire votre point de Vue hériter du ViewModel, comme suit:
Maintenant, à votre avis, vous pouvez accéder à toutes les différentes propriétés de votre objet, il suffit d'écrire des énoncés comme:
Pour construire votre point de vue à partir de votre contrôleur, de créer une nouvelle instance de votre classe (MyViewModel), passer l'ID de l'enregistrement de détails que vous avez besoin, et la logique dans votre classe prendra soin de trouver les bonnes données. Ensuite de retour à votre point de vue à partir de votre contrôleur comme normal.
OriginalL'auteur womp
Je recommande la lecture de ce guide d'introduction sur la ASP.NET MVC
http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx
Il couvre la plupart des scénarios de base, vous aurez besoin de se lever et courir.
Cependant, si vous voulez combiner plusieurs jeux de résultats en un seul, et ensuite de retour comme un point de vue, vous devez créer un objet personnalisé, et la carte du jeu de résultats à elle, alors vous pouvez lier à l'encontre de votre objet personnalisé dans la vue.
OriginalL'auteur Dkong
Quand j'ai besoin d'afficher plusieurs choses de ce genre sur une page web, j'utilise généralement l'utilisation RenderAction de le faire.
RenderAction vous permet d'utiliser une méthode de contrôleur dédié à cette partie de la vue (une sous-vue, en effet), de sorte que vous pouvez passer d'un ensemble unique de données de typage fort que des données sur les "sous-vue".
RenderAction est dans le Microsoft.Web.Mvc ("futures") de l'assemblée.
Si vous êtes nouveau à tout cela, je m'excuse, c'est un peu au bord de saignement, mais vous allez avoir besoin de le savoir de toute façon. Assurez-vous de vérifier la NerdDinner tutoriel première.
http://www.andreas-schlapsi.com/2008/11/01/renderaction-and-subcontrollers-in-aspnet-mvc/
http://davidhayden.com/blog/dave/archive/2009/04/04/...
OriginalL'auteur Robert Harvey