Domanda

Sto cercando di capire come gestire il seguente scenario. In generale, ho un sacco di record in una tabella. Tutti questi hanno campi ID e ParentID per formare un albero.

Page1
 - Page2
 - Page3
Page4
 - Page5
 -- Page6

Ora, voglio che i miei percorsi per Pagina3 e Pagina6 siano come / Page1 / Page6 e / Page3 / Page5 / Page6 rispettivamente. Cioè, voglio includere tutti i genitori nell'URL.

Come impostare l'azione / routing del mio controller per ottenere il risultato sopra indicato?

Modifica: ho dimenticato di menzionare che la struttura sopra sarà dinamica - i nodi possono essere aggiunti / cancellati / cambiano padre, ecc.

È stato utile?

Soluzione

È possibile utilizzare una corrispondenza jolly.

Un possibile percorso:

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

e nell'azione accetta la stringa Pagina e analizzala manualmente, magari con una divisione?

Questo potrebbe anche essere utile: URL Routing

Altri suggerimenti

Nota che il nome e l'azione del controller sono fissi e non basati sull'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
    }
}

Dovresti usare

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

o forse usando il routing di espressioni regolari

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top