ASP.Net MVC - post d'un contrôleur à l'autre (action en action)
Est possible de faire un post à partir d'une Action "Enregistrer" dans un contrôleur "Produit" à une Action "Égouttage" dans un contrôleur "Catégorie"??
Et aussi le passage d'un FormCollection comme paramètre
OriginalL'auteur AndreMiranda | 2010-04-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez déclarer un formulaire comme ceci dans votre Vue, et vous pouvez spécifier quel que soit le contrôleur ou l'Action que vous souhaitez.
Si vous êtes dans un contrôleur, alors vous pouvez utiliser.
De ce pas... j'ai besoin si je suis déjà à l'intérieur d'une action et d'un poste à un autre de l'action dans d'autres contrôleur de...
OK, mais ce n'est pas le but de la fin pour enregistrer vos catégories? Ne vous vous souciez comment ça se passe, tant que ça se passe, en utilisant les meilleures pratiques? Qu'essayez-vous de réaliser? Si vous avez juste besoin d'appeler une autre méthode de contrôleur, qui peut être fait assez facilement, sans créer une requête POST à le faire.
Vous pouvez passer votre modèle à l'aide de TempData.
TempData - je n'ai pas à ce sujet. D'un air de défi une chose agréable à utiliser. grande réponse +1
OriginalL'auteur Amitabh
Je voudrais juste mettre à jour vos catégories dans votre référentiel à partir de votre contrôleur de Produit méthode de sauvegarde directement, ou de refactoriser le Sauver Catégories de fonctionnalités dans sa propre méthode, et l'appeler à partir de deux méthodes de contrôleur.
+1 pour dire "refactor", pour lequel j'ai pris un paragraphe entier.
OriginalL'auteur Robert Harvey
L'hypothèse est que vous êtes l'exécution de la POSTE dans le cadre du Produit.
OriginalL'auteur Neil T.
Depuis
POST
est un verbe d'une requête HTTP, cela n'a de sens (comme l'écrit) si le.Save()
méthode déclenche une HTTP connexion de bouclage à la appropriée.SaveAll()
, (commehttp://..../Category/SaveAll
) route et transmet le formulaire de collecte dans le cadre de la demande. C'est stupide et n'est pas recommandé, car cela va casser votre capacité de test de l'unité de ce contrôleur.Si, toutefois, vous voulez dire que vous voulez l'appeler
.SaveAll()
et retourne son résultat du rendu au client, vous pouvez utiliser.RenderAction()
et passer du modèle ou de la collection de formulaires reçus par.Save()
en tant que paramètre.Ou, sur le côté serveur, il vous suffit d'instancier la Catégorie contrôleur et d'appeler son .SaveAll() la méthode, passant à nouveau le modèle reçu par
.Save()
en tant que paramètre.Cependant, vous aurez à prendre la suite de cet appel, et assurez-vous qu'il est correctement manipulé par le résultat de l'affichage.
Si c'est ce que vous êtes en train de faire, il est intéressant de noter que vous devriez vraiment avoir le code de la
.SaveAll()
méthode qui effectue l'enregistrement séparé en un dédié aux professionnels de la couche logique, plutôt que de vivre dans le contrôleur. Toutes ces fonctionnalités devraient, en théorie, être disponible pour une utilisation dans un autre contrôleur, ou dans une bibliothèque qui pourraient être inclus dans d'autres applications.Si vous êtes de tests unitaires de vos contrôleurs ensuite vos contrôleurs sont à en faire trop.
OriginalL'auteur 3Dave
return RedirectToAction("ViewService", "Admin")
Ici, "ViewService" est un Nom d'Action et "Admin" est le Nom du Contrôleur de
OriginalL'auteur Maheshwari Kahar