Question

J'ai une question assez particulière avec le routage.

Pour revenir à l'acheminement après ne pas avoir à vous soucier de configuration pour un an, je me sers de la route par défaut et la route pour les ressources ignorer:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
        "Default",
        // Route name
        "{controller}/{action}/{id}",

        // URL with parameters
        new
        {
            controller = "Home",
            action = "Index",
            id = UrlParameter.Optional
        });

J'ai un RulesController avec une action pour Index et Lorem et un Index.aspx, Lorem.aspx Vues> Répertoire Règles.

Je dispose d'un ActionLink visant à Règles / Index sur la page maseter:

<li><div><%: Html.ActionLink("linkText", "Index", "Rules")%></div></li>

Le lien est rendu comme http://localhost:12345/Rules/ et reçois un 404.

Quand je tape Index dans l'URL des voies d'application à l'action.

Quand je change l'action de la route par défaut de "Index" à "Lorem", le lien d'action est rendu comme http://localhost:12345/Rules/Index ajoutant le Index comme il est plus sur la route par défaut et les voies d'application à l'action Index correctement.

J'ai utilisé Debugger Phil Haack routage , mais entrant dans le http://localhost:12345/Rules/ url est à l'origine d'une 404 en utilisant aussi.

Je pense que je l'ai couvert toutes les erreurs de débutant, des questions pertinentes et de SO RTFMs de base.

Je suppose que « les règles » n'est pas une sorte de mot réservé dans le routage. Autre que la mise à jour des routes et les debuugging, que puis-je regarder?

Était-ce utile?

La solution

Assurez-vous qu'il n'y a pas un dossier appelé « règles » dans le même répertoire que votre site Web. Dans sa configuration par défaut, les routes ASP.NET MVC respecteront les chemins physiques avant les définitions de l'itinéraire. S'il y a un itinéraire défini qui correspond au chemin d'un dossier physique dans le site Web, le moteur de routage sera complètement contournée.

Vous pouvez désactiver le routage des chemins physiques en changeant la propriété RouteTable.Routes.RouteExistingFiles à false, mais si vous le faites et votre application a des chemins vers des ressources physiques (comme les images, scripts, feuilles de style, etc.), vous devrez tenir compte de ces chemins avec les définitions correspondant à IgnoreRoute (). Par exemple:. RouteTable.Routes.IgnoreRoute("content/{*pathInfo}");

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top