2016-08-30 1 views
0

Je sais qu'il est l'approche générale:routes.MapRoute Confusion

routes.MapRoute 
    (
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

Mais si j'essaie comme ceci:

routes.MapRoute 
    (
      name: "Defaults", 
      url: "Home/Index/1" 
    ); 

Il ne donnera aucune erreur pour exécuter le projet. J'ai Controller = HomeAction = Index() dans mon HomeController mais pourquoi Il donne une erreur pendant que je tape ce http://localhost:1702/Home/Index/1 dans mon navigateur?

Error: The matched route does not include a 'controller' route value, which is required.

Quelle partie est obligatoire dans Routage? Une autre question est: Pourquoi nous avons besoin Route Name ?? Si je donne name="", cela fonctionne bien, même plus d'un itinéraire est existe comme name=""

+0

'routes.MapRoute ( nom: "Par défaut", url: "{contrôleur}/{action}/{id}", par défaut: new {controller = "Home", action = "Index", id = UrlParameter.Optional} ); –

+0

Non. Si vous essayez comme moi, cela ne vous donnera aucune erreur. Je sais que les routes.MapRoute deviennent comme vous. Par défaut, il comporte trois parties. nom, url et par défaut, je sais cela –

+0

Peut-être que [ceci] (http://stackoverflow.com/questions/23752298/mvc-routing-why-i-can-not-ignore-defaults-the-matched-route-does -not-include-a) peut aider? Votre question semble être un doublon. –

Répondre

0

vous en avez besoin:

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
+0

Je sais que c'est l'approche générale. Si je n'utilise pas les valeurs par défaut, quel sera le problème? –

+0

Ma question est éditée. –

+0

@LutforRahman Il existe une [méthode surchargée] (https://msdn.microsoft.com/en-us/library/system.web.mvc.routecollectionextensions.maproute (v = vs.118) .aspx) qui indique que vous n'a pas besoin de 'defaults' .. alors pourquoi ne pas l'essayer? –

0

url est de définir la structure de l'URL pour l'utilisateur final. Vous pouvez même changer pour

url: "{action}/{controller}/{id}" 

Donc, pour comprendre ce qui est contrôleur et qui est une action que vous devez fournir la structure url.