2017-02-13 1 views
0

J'ai un problème, et je ne sais pas quoi faire.Est-il possible d'enregistrer des données dans 2 tables en utilisant la redirection vers? Sans Viewmodel

J'ai 2 tables qui ont une relation entre eux (PK - FK), et je veux savoir s'il est possible d'ajouter une nouvelle ligne dans la première table puis rediriger cela vers la deuxième table, puis ajouter une autre ligne puis enregistrer les données dans les deux tableaux?

J'ai essayé de faire cela mais c'est seulement en insérant une nouvelle ligne juste dans la première, la seconde me permet d'entrer des données mais quand j'enregistre, elle ne sauvegarde pas dans la seconde.

J'ai 2 contrôleurs séparés pour chaque table mais c'est vraiment ce que je veux savoir, si c'est possible et comment. Un exemple basique est vraiment apprécié. S'il vous plaît gardez à l'esprit que je suis relativement nouveau dans la programmation de cette technologie.

Merci, et désolé pour toute mauvaise orthographe!

Répondre

1

Votre question est très floue. Êtes-vous à la recherche d'un moyen de sauvegarder toutes les données à la fois ou simplement de créer un flux de travail dans lequel l'utilisateur peut entrer dans les deux ensembles de données?

Pour enregistrer les données en même temps, vous avez deux options. La première et la meilleure option consiste simplement à inclure tous les champs pour les deux entités dans un formulaire. Il ne doit pas y avoir de corrélation 1-1 entre un contrôleur et une entité particulière. Vous pouvez travailler avec plusieurs entités différentes dans une action de contrôleur unique. En utilisant un modèle de vue, vous pouvez travailler avec toutes les données dans une vue, puis mapper les informations publiées à toutes les entités appropriées et les enregistrer toutes en même temps.

La deuxième option consiste à créer un "assistant" ou un formulaire en plusieurs étapes. Comme chaque requête est idempotente, il suffit de conserver les données de chaque publication d'une manière ou d'une autre, généralement TempData. Dans la dernière étape, vous pouvez ensuite récupérer les données postées précédemment à partir de TempData ou partout où vous l'avez persisté et enfin enregistrer toutes les entités.

Si vous parlez de deux étapes de sauvegarde distinctes dans le cadre d'un flux de travail, c'est encore plus simple. Vous suivez simplement le modèle PRG (Post-Redirect-Get) et faites simplement votre redirection vers la prochaine étape de la chaîne. Cependant, cela ne dirige l'utilisateur que vers un chemin défini. Cela n'empêche pas l'utilisateur de rompre la chaîne et de ne pas terminer les étapes suivantes.

+0

Bonjour Chris. Je suis désolé si ma question n'est pas claire, mais j'ai besoin de quelque chose comme le modèle PRG que vous venez de spécifier. Alors merci! Je vais chercher un exemple de ce modèle pour mieux le comprendre afin que je puisse l'appliquer à mon application. Merci encore une fois. À votre santé! –

+0

Chris mon je pose une autre question sur ce sujet? Je l'ai fait et cela fonctionne, mais pouvez-vous m'envoyer une référence sur la façon d'obtenir le dernier ID inséré (PK) et l'afficher lorsque je redirige vers la vue de l'autre table? Par exemple j'ai PK avec la valeur 3 et quand je redirige vers l'autre vue je veux afficher cette valeur "3" dans le domaine du FK? J'ai cherché quelque chose mais je ne l'ai pas bien compris. Par exemple ce lien: "http://stackoverflow.com/questions/5103792/asp-mvc-get-last-insert-id-from-savechanges" mais je ne comprends pas comment l'afficher (la valeur FK) . Merci encore pour toute votre aide. –

+0

Lorsque vous effectuez la redirection, vous devez inclure cette information, par ex. 'return RedirectToAction (" Foo ", nouveau {id = 3});'. –