Est-il possible d'afficher une vue d'un autre contrôleur?
Disons par exemple que j'ai une CategoriesController
et une Category/NotFound.aspx
vue. Une fois dans le CategoriesController
, je peux facilement revenir View("NotFound")
.
Maintenant, disons que j'ai une ProductsController
et une action et une vue pour ajouter un produit. Cependant, cette action nécessite que nous ayons une catégorie à laquelle ajouter le produit. Par exemple Products/Add/?catid=10
,.
Si je ne parviens pas à trouver la catégorie en fonction de catid
, je souhaite afficher la NotFound
vue à partir du contrôleur Catégories au lieu de créer une CategoryNotFound
vue sous le contrôleur Produits.
Est-ce possible ou est-ce que je structure les choses de la mauvaise façon? Y at-il un bon moyen de le faire?
new ViewResult { ViewName = "~/Views/Error/Unauthorised.cshtml" };
et cela a fonctionnéVous pouvez utiliser:
Il a été testé dans ASP.NET MVC 3, mais devrait également fonctionner dans ASP.NET MVC 2.
la source
"~/Views/Category/NotFound.cshtml"
.Oui c'est possible. Renvoyez une
RedirectToAction()
méthode comme celle-ci:la source
As-tu essayé
RedirectToAction
?la source
Oui, vous pouvez. Renvoyer une action comme celle-ci:
Un exemple:
Cette approche appellera la méthode GET
Vous pouvez également transmettre des valeurs à une action comme celle-ci:
la source
Vous pouvez également appeler n'importe quel contrôleur à partir de JavaScript / jQuery . Supposons qu'un contrôleur renvoie 404 ou un autre contrôle utilisateur / page. Ensuite, sur une action, à partir de votre code client, vous pouvez appeler une adresse qui déclenchera votre contrôleur et retourner le résultat au format HTML votre code client peut prendre ce résultat retourné et le mettre où vous voulez dans votre page ...
la source
Avec ce code, vous pouvez obtenir n'importe quel contrôleur:
la source