2010-07-02 16 views
5

sto cercando di fare qualcosa di simile a questo post:Omettere nome del controller da URL MVC

How to hide controller name in Url?

solo senza alcun tipo di ID.

Il server è in esecuzione IIS 6 e le pagine mostrano già in piedi senza estensioni, quindi non è un problema di carattere jolly.

che sto cercando di colpire http://website.com/action-name

ho http://website.com/controller/action-name lavorare

sto assumendo questo è solo un semplice cambiamento di routing che sto in qualche modo scherzano su. La mia regola di routing corrente è:

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

risposta

7

è la tua nuova regola di routing posizionato sopra regola di routing di default di {controller, action, id} in modo che abbia la possibilità di abbinare prima?

+0

buon punto, ok è obbligatorio avere una route di default con action e id? posso avere un solo controllore in questo modo: 'routes.MapRoute ( nome: "Default", url: "{} Controller", default: new {regolatore = "casa"} );' – stom

+1

@stom: No, non è obbligatorio, ma è una buona idea. La regola di routing predefinita fornisce all'applicazione un posto dove andare se viene presentata una rotta che non corrisponde a nessuno dei percorsi personalizzati. –

2

Il problema è il percorso predefinito è probabilmente ancora in atto in modo che è la corrispondenza prima e inadempiente il resto degli ingressi che si aspetta. In base al tuo commento sul fatto che il controller/action funziona, mi viene in mente che non lo hai rimosso o che viene visualizzato per primo. Puoi pubblicare il tuo intero RegisterRoutes?

Provare a fare il percorso definito il primo percorso e dovrebbe corrispondere a qualsiasi cosa tu passi.

EDIT: Aggiunto ciò che il vostro RegisterRoutes dovrebbe essere simile:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    // This will match anything so if you have something very specific with hard coded 
    // values or more items that will need to be match add them here above but do not 
    // add defaulted values so it can still fall through to this. 
    routes.MapRoute( 
     "RouteName", 
     "{action}", 
     new { controller = "Home", action = "Index" }); 
} 
Problemi correlati