Domanda

Normalmente i miei URL assomigliano allo standard: www.example.com/controller/action

Ora voglio configurare la mia sezione di amministrazione come:

 www.example.com/admin/
 www.example.com/admin/user/list
 www.example.com/admin/content/add
etc.

Quindi il formato è: www.example.com/admin/controller/action

Non riesco a capire come impostare i percorsi in modo che assomigli a quanto sopra.

È stato utile?

Soluzione

Devi solo mappare un nuovo percorso con la sezione 'admin' codificata all'inizio della definizione del percorso.

Ad esempio, aggiungi questo ai tuoi percorsi in RegisterRoutes nel file Global.asax.cs e assicurati che appaia sopra il percorso predefinito (supponendo che tu non abbia aggiunto altre rotte):

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

Nota: la parte 'admin' codificata all'inizio della definizione del percorso.

Nota 2: se hai aggiunto altri percorsi oltre il valore predefinito dovrai assicurarti che i percorsi siano ordinati correttamente.

Ecco un link a un buon post sul blog di Scott Guthrie relativo al routing MVC : Routing URL

Altri suggerimenti

La risposta di Kelsey è giusta, ma volevo aggiungere qualcosa alla discussione. Un'altra opzione è quella di non avere effettivamente " admin " percorsi, ma richiedono invece sessioni autenticate dall'amministratore per accedere effettivamente agli URL con restrizioni.

Questo è spesso il modo in cui le cose vengono fatte in " tradizionale " Applicazioni RESTful. Il tuo controller rappresenta il tipo di risorsa che stai manipolando, l'azione è il verbo e l'id è l'identificatore univoco per un membro specifico di quella risorsa.

In altre parole, invece di avere:

/content/list (for normal users)
/admin/content/add (for admins)

Avresti

/content/list (for everyone)
/content/add (for admin, but must be authenticated to work)

L'aggiunta di / admin / all'URL in realtà non aggiunge alcun vantaggio (tranne forse che puoi scrivere la tua logica di sicurezza con una sola regola contro qualsiasi cosa sotto / admin), ma il compromesso è percorsi più complicati e infrange lo standard RESTful . Rompere le pratiche standard non è di per sé una cosa negativa, ma dovresti considerare che sono standard per un motivo e, a meno che tu non abbia specifici benefici per infrangerle, potresti considerare di aderirle.

Va ??notato che in entrambi gli stili URL è necessario autenticare l'utente, altrimenti chiunque potrebbe usarlo.

In ASP.NET MVC, è possibile limitare l'accesso alle azioni (o persino a interi controller) in base al livello utente utilizzando ActionFilters. Decorando le tue azioni di solo amministratore con questi filtri, puoi assicurarti che solo gli utenti amministratori autenticati possano effettivamente usarli.

Leggi post di blog di Scott Gu o Rob Connery's post per ulteriori informazioni.

A partire dalla versione 2 di MVC hanno aggiunto il concetto di 'area' che consente di farlo correttamente :) Ecco Il post di ScottGu sull'anteprima di MVC 2 .

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