est-il possible pour un contrôleur ASP.NET MVC de créer une nouvelle instance d'un contrôleur différent et de déléguer efficacement la résonabilité à cela?
Disons par exemple que j'ai deux contrôleurs dans / contrôleurs / répertoires: P>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<int>" %> Number of things: <%= Model.ToString() %>
4 Réponses :
Je pense qu'il serait préférable d'utiliser.
routes.MapRoute("Home", "Home/Index/{id}", new {controller = "Other", action = "ShowNumberOfThings", id = 100});
Je ne peux pas utiliser RedirectToaction car cela se traduit par deux demandes HTTP. Dans ma situation, je dois transmettre un objet complexe, pas un INT, donc je ne peux donc pas vraiment le sérialiser dans un paramètre QueryString (route). Belle réponse cependant.
Si vous souhaitez être présenté avec "Nombre de choses: 100" Lorsque vous appuyez sur l'action Index, pourquoi ne pas rendre directement la vue correspondante:
public class HomeController : Controller { public ActionResult Index() { return View("~Views/Other/ShowNumberOfThings.aspx", 100); } }
Une approche différente serait l'utilisation de vues partielles
au lieu de Vous pouvez mettre votre vue dans ont des vues et dans les deux vues implémente la vue partielle p> Vous pouvez changer l'int pour tout objet qui sera transmis au modèle p> p> ~ vues / autre / monseignantofthings.aspx code> p>
~ Vues / partagées / monseignéofthes.ascx code> p>
~ vues / autre / monseignéofthings.aspx code> et
~ vues / home / index.asaspx code> implémenter la vue partielle p>
Une autre possibilité (similaire à des vues partielles) consiste à utiliser html.renderaction code>. Cela permet de voir différentes classes de modèle et des méthodes de contrôleur séparées.
<% Html.RenderAction("yourActionName", "yourControllerName", routeValues); %>
J'ai fait quelque chose de très semblable à cela qui a fonctionné bien - le modèle doit être passé correctement, alors qu'est-ce que c'est sur le contexte qui est un problème?