J'utilise actuellement ASP.NET MVC pour créer un système de gestion de contenu des parties d'un site Web et avoir le travail odieux de recréer toutes mes vues comme une vue partielle car il semble briser la manière dont la carte du site fonctionne. p>
Par exemple, ma faqadmincontroller a les vues: Index, AddFaq, EditFAQ, ConfirmDeleeFAQ et ceux-ci doivent devenir des vues partielles. P>
On m'a dit que chaque contrôleur doit avoir une vue unique et tous les autres formes ou actions qui se terminent dans le contenu de la page à afficher doivent être mis en œuvre comme une vue partielle. P>
J'ai vérifié avant de poster et aucune documentation, des articles, des wikis ou des questions me donnent une réponse directe sur le fait que de nombreuses vues par contrôleur enfreignent ou non le modèle MVC. P>
strictement, si un contrôleur et une vue MVC doivent avoir une relation de 1 à 1? P>
4 Réponses :
On m'a dit que chaque contrôleur doit avoir une vue unique et tous les autres formes ou actions qui se terminent dans le contenu de la page à afficher doivent être mis en œuvre comme une vue partielle. P> blockQuote>
C'est absurdité. P>
strictement, si un contrôleur et une vue MVC doivent avoir une relation de 1 à 1? P> blockQuote>
absolument pas. Concevez votre application de manière logique et cohérente. P>
Un contrôleur gère généralement de nombreuses actions et retourne de nombreuses vues différentes. Vous pouvez envisager d'avoir une faqController pour rendre toutes les points de vue, à la fois pour l'utilisateur et l'administrateur. P>
Dans Web API, un contrôleur d'API doit représenter un point d'extrémité avec plusieurs verbes (s'il existe) sur un point final unique. Dans Classic MVC, vous pouvez utiliser la même analogie, mais c'est un environnement très différent. Un contrôleur d'une vue par contrôleur (+ pages vues) est un bon moyen de rendre votre application propre et bien conçue, mais vous n'êtes pas limité à le faire.
Je pense que cela défait le but de MVC. Comme le contrôleur devrait pouvoir décider quelle vue utiliser pour présenter un modèle. P>
Ce n'est pas vraiment une décision de contrôleurs de choisir et de choisir la vue à utiliser.
@mko - Qui auriez-vous faire ce choix alors?
@HENK HOLTERMAN s'il vous plaît expliquer à nous comment un contrôleur "choisit" quelle vue utiliser?
Vue de retour ("MyView", MyModel) CODE>. Ou avec une redirection.
@HENK HOLTERMAN Ceci est un appel direct à l'intérieur d'une action et il n'a rien à voir avec le contrôleur pouvant choisir une vue. Sur la base de la logique qu'un contrôleur choisirait une vue différente? Rien. Le contrôleur ne choisit rien, c'est un mauvais choix de mots.
contrôleur MVC doit pouvoir supporter plus d'une vue. P>
Les contrôleurs MVC peuvent et doivent prendre en charge plusieurs vues. Il est utile d'avoir les vues pris en charge par un seul contrôleur se rapportant au même objet ou processus commercial.
Considérez l'exemple ci-dessous P>
public class ExampleController : Controller
{
public ActionResult Index()
{
//get list of objects
return View(); // uses a view called Index
}
public ActionResult Edit(string id)
{
Object target = ObjectManager.GetObject(id);
if (target == null)
{
return New();//view for creating a record
}
else
{
ViewData.Add("detail", target);
return View("Detail");//using a view not name-mapped to controller method name
}
}
public ActionResult New()
{
return View();
}
}