2010-03-17 8 views
3

J'essaie ASP.NET MVC, mais, après avoir lu un énorme tutoriel, je suis légèrement confus. Je comprends comment les contrôleurs ont des actions vers lesquelles les URL sont routées, mais comment fonctionnent les pages d'accueil? La page d'accueil est-elle son propre contrôleur (par exemple "Home") qui n'a aucune action? Cela semble correct, mais comment est-ce que la fonctionnalité est implémentée sans actions (aucune action ne signifie aucune méthode qui appelle le moteur de vue)? En d'autres termes, ma question est la suivante: comment les pages d'accueil sont-elles implémentées (en termes de contrôleurs et de vues)? Pourriez-vous s'il vous plaît fournir exemple de code?Pages d'accueil dans ASP.NET MVC

Répondre

7

« Home » page est rien de plus que Action arbitraire dans un Controller spécifique qui retourne un certain View

Pour définir la « Home », page ou mieux libellé, la page par défaut, vous devez modifier le routage informations dans le fichier Global.asax.cs:

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     AreaRegistration.RegisterAllAreas(); 

     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "NotHome", action = "NotIndex", id = "" } // Parameter defaults 
     ); 

Notez la définition d'itinéraire:

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "NotHome", action = "NotIndex", id = "" } // Parameter defaults 
     ); 

Cette route est une route "attrape-tout", ce qui signifie qu'elle prendra n'importe quelle URL et la divulguera à un contrôleur spécifique et une action et un identifiant. Si aucune ou une des routes sont définies, il utilisera les paramètres par défaut:

new { controller = "NotHome", action = "NotIndex", id = "" } 

Cela dit: « Si quelqu'un visite ma demande, mais n'a pas précisé le contrôleur ou l'action, je vais les rediriger vers l'action NotIndex de mon contrôleur NotHome ". J'ai volontairement mis "Non" pour illustrer que les conventions de dénomination de "Default.aspx", "Index.html" ne s'appliquent pas aux routes MVC.

3

La page d'accueil correspond généralement à l'action/vue par défaut du contrôleur par défaut.

Vous souhaitez créer, par exemple, un HomeController avec une action Index et une vue correspondante, puis dans vos correspondances d'itinéraire vous créerais un défaut, fourre-tout la route, quelque chose comme ceci:

routes.MapRoute(
    "Default",            
    "{controller}/{action}/{id}",       
    new { controller = "Home", action = "Index", id = "" }); 
0

Cela dépend de ce que vous entendez par "page d'accueil". Si vous voulez dire la page vue lorsque vous allez à http://www.yoursite.com (sans page ou nom de contrôleur), alors c'est le contrôleur d'index, qui fonctionne comme tout autre sauf que vous ne voyez pas le nom du contrôleur dans l'URL.

+0

Comment créer le contrôleur d'index? A-t-il besoin d'avoir une action? –

+0

Désolé, je voulais dire Index Action. Tout contrôleur peut avoir une action d'index, qui est configurée par défaut dans le routage pour être la "maison" de ce contrôleur. –

Questions connexes