2010-09-11 6 views
0

Je me demande mécanisme de mappage des contrôleurs aux vues. Je ne peux pas comprendre comment le mappage peut être possible Si nous revenons juste la valeur de la méthode View(). L'appel de la méthode View() de la classe contrôleur a surchargé la méthode View avec des paramètres null. Mais comment peut-on effectuer un mappage vers des vues sans valeur de retour spécifiée de la méthode View()?À propos de MVC 2 Afficher le mécanisme de mappage

Répondre

2

Le contrôleur connaît l'action invoquée et, par convention, si vous ne spécifiez pas de nom de vue, il recherchera dans Views/ControllerName/ActionName.aspx (.ascx) une vue correspondante. S'il ne trouve pas, il vous montrera une liste des emplacements recherchés.


Voici plus de détails sur la façon dont cela fonctionne:

  1. Demande soumise à /ControllerName/ActionName
  2. La demande est intercepté par le pipeline ASP.NET et le moteur de routage basé sur la configuration extrait les jetons. Si les routes par défaut sont configurées, elle extrait controller = "ControllerName" et action = "ActionName".
  3. Le moteur de routage examine le cache du contrôleur pour voir s'il existe un type correspondant au nom ControllerNameController.
  4. S'il existe, il est instancié à l'aide d'une fabrique de contrôleurs et la méthode appelée ActionName est invoquée. Si le contrôleur n'existe pas et que la fabrique de contrôleurs par défaut est utilisée, la réflexion est utilisée pour rechercher tous les types dérivés de Controller dans tous les assemblys référencés et ces types sont mis en cache.
  5. L'action est exécutée et le moteur de vue recherche un modèle stocké en utilisant les conventions décrites précédemment.
+1

Cependant, je ne sais pas comment Controller peut connaître l'action invoquée. Alors pouvez-vous écrire plus de détails? – Freshblood

+0

L'ensemble du paradigme Controller est basé sur la réflexion des noms de méthodes de votre classe Controller. Par conséquent, lors de l'exécution d'une action, il est bien connu quel est le nom de la méthode actuelle (Action). –

+1

Vous voulez dire que la classe qui appelle les méthodes Controller connaît déjà le nom de la méthode, n'est-ce pas? – Freshblood

1

La méthode d'action du contrôleur est appelée par l'infrastructure ASP.NET MVC. Les règles de routage que vous avez global.asax définissent quelle URL est mappée à quelle méthode d'action.