Question

J'essaie de comprendre comment gérer le scénario suivant. En général, j'ai un tas de disques dans un tableau. Tous ont des champs ID et ParentID pour former une arborescence.

Page1
 - Page2
 - Page3
Page4
 - Page5
 -- Page6

Maintenant, je veux que mes itinéraires pour Page3 et Page6 soient comme / page1 / page6 et / page3 / page5 / page6 respectivement. C’est-à-dire que je veux inclure tous les parents dans l’URL.

Comment définir l'action / le routage de mon contrôleur pour obtenir le résultat ci-dessus?

Modifier: vous avez oublié de préciser que la structure ci-dessus sera dynamique - des nœuds peuvent être ajoutés / supprimés / changer de parent, etc.

Était-ce utile?

La solution

Vous pouvez utiliser une correspondance générique.

Un itinéraire possible:

routes.MapRoute("SomeName", "{*Page}", new { controller = "ControllerName", action = "ActionName" });

et dans l'action accepter la chaîne de caractères Page et l'analyser manuellement, éventuellement avec une scission?

Cela pourrait également être utile: Routage des URL

Autres conseils

Notez que le nom du contrôleur et l'action sont fixes et non basés sur l'URL.

// place the more specific route first
routes.MapRoute("r1", "{parent}/{child}/{subchild}", 
    new { controller = "Page", action = "Index", parent = parent, child = child, subchild = subchild });

routes.MapRoute("r2", "{parent}/{child}", 
    new { controller = "Page", action = "Index", parent = parent, child = child });


public class PageController
{
    public ActionResult Index(string parent, string child, string? subchild)
    {
        // stuff
    }
}

Vous devriez utiliser

routes.MapRoute("Page6", "Page3/Page5/Page6", new { controller = "Page6", action = "Index" });

ou peut-être en utilisant le routage d'expressions régulières

http: / /blog.sb2.fr/post/2009/01/03/Regular-Expression-MapRoute-With-ASPNET-MVC.aspx

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