Question

Dans mon routage, j'aimerais avoir quelque chose comme un gestionnaire d'itinéraire introuvable.

Par exemple, j'ai créé un mappage comme

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

routes.MapRoute(
                     "Catchall",
                     "{*catchall}",
                     new { controller = "Home", action = "Lost" }
             );

mais lorsque l'utilisateur insère une adresse de type / un / deux / trois / quatre / bla / bla, il est mis en cache avec le mappage Catchall.

Mais lorsque l'utilisateur insère quelque chose qui doit correspondre au mappage par défaut, (comme / un / deux /, mais ce contrôleur ou cette action n'est pas implémenté) Je voudrais que la cartographie Catchall accepte cette demande, parce que tous les autres mappages ont échoué. Mais au lieu de cela, je reçois une erreur.

Devrais-je remplacer certains gestionnaires de mappage pour intercepter l'exception si le contrôleur ou l'action obtient une exception?

Était-ce utile?

La solution

Le problème ici est qu’il n’incombe pas à la Route de s’assurer que " un / deux " mappe vers un fichier . Cette responsabilité incombe à ViewEngine. Depuis " un / deux " est un itinéraire valide, il sera choisi.

Si vous souhaitez gérer l'erreur d'une route non valide, je vous recommande simplement d'utiliser la fonction ErrorHandling intégrée dans la page " page " pour afficher le message que vous auriez fait dans le Catchall.

Autres conseils

Je ne pense pas que ce soit la meilleure solution, mais vous pouvez toujours être plus précis sur vos itinéraires:

routes.MapRoute(
    "home and action",
    "home/index/{id}",
    new { controller = "Home", action = "Index", id="" }
);

... répétez l'opération pour le reste de vos actions ...

routes.MapRoute(
    "article catch all",
    "home/{article}",
    new { controller = "Home", action = "ArticleSearcher", article="" }
);

Ceci tenterait de faire correspondre une action directe et si aucune action n'est trouvée, transmettrait ce qui serait normalement la partie {action} de la route par défaut à l'action 'ArticleSearcher' en tant que paramètre de chaîne d'article.

L’inconvénient est de devoir créer explicitement chaque route contrôleur / action.

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