196 messaggi dal 12 febbraio 2016
Buongiorno a tutti,
vorrei impostare una MapRoute specifica solo per il controller home in maniera da non avere un url tipo /home/about, ma semplicemente /about.

Tutti gli altri controller invece vorrei lasciarli normalmente tipo /gallery/cat/name

Che regola Route devo scrivere?
710 messaggi dal 13 novembre 2008
Contributi
ciao,
dovresti definire una regola specializzata e metterla prima di quella di default, es.

    routes.MapRoute(
        name: "specialAction",
        url: "{action}",
        defaults: new { controller = "Home", action = "Index" } 
    );

    routes.MapRoute(
        name: "Default", // Route name
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
196 messaggi dal 12 febbraio 2016
Ciao Teo, ti ringrazio.
Con la tua regola effettivamente funziona benissimo col controller Home, però non funziona quando richiamo la view index di un altro controller, ad esempio con il controller gallery: se visualizzo http://localhost:49888/gallery (che poi corrisponde a http://localhost:49888/gallery/index) ottengo l'errore 404.
710 messaggi dal 13 novembre 2008
Contributi
Si, in effetti è logico funzioni così... Tenendo conto che in cima ci devi mettere le ruote più specializzate puoi provare con

routes.MapRoute(
name: "home-about",
url: "about",
defaults: new
{
controller = "Home",
action = "About",
id = UrlParameter.Optional
}
);

Lo stesso per altre action di Home

Poi la route di default.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.