2010-01-11 9 views
5

Problemi Questo dovrebbe essere semplice, ma ahimè ...l'impostazione di un controller di default in MVC 2 RC Area

Ho creato un'area di amministrazione all'interno del mio progetto MVC 2 (aree di progetto singoli). Ho creato un paio di controller e le rispettive cartelle di visualizzazione. Nel metodo AreaRegistration.RegisterArea, ho specificato che voglio il controller di default di essere "Dashboard":

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Dashboard", action = "Index", id = "" }, new string[] { "Admin" } 
     ); 
    } 

Se io raggiungere l'URL/Amministratore/Dashboard, l'indice viene su bene. Quello che voglio, però, è consentire all'utente di andare su url/Admin/e vedere la stessa cosa. Quando faccio questo, tuttavia, ottengo "La risorsa non può essere trovata".

Mi sto solo bagnando i piedi con l'implementazione Area di MVC 2, e non penso di fare nulla di eccessivamente complicato ... Qualcuno ha avuto lo stesso problema? Devo specificare un percorso separato, forse al livello radice, non a livello di area?

+0

proposito, che param matrice stringa alla fine della chiamata MapRoute è estraneo, ho provato ad aggiungere nel tentativo ignaro a risolvere il problema, ma poiché non v'è un conflitto nome controllore nel resto del progetto, penso che sia inutile in questo caso. – nkirkes

+0

Qualche fortuna con questo? – Andrew

+0

Non ancora. Ho dovuto mettere da parte il proj per un paio di giorni per altre priorità. Scoverò di nuovo stasera però. Per l'interim che ho appena collegato direttamente all'Area/Controller/Azione, ho inteso che l'impostazione predefinita fosse. – nkirkes

risposta

1

Ok, strano. Così ho aggiunto un'area diversa, chiamata appropriatamente "Amministrazione", ho impostato il controller predefinito e aggiunto il controller, la vista, ecc. Appropriati e ha funzionato. La differenza? Nel mio primo caso, stavo usando "Admin" come area.

+4

Questo garantisce ulteriori ricerche come Mi piacerebbe sapere perché "Admin" stava causando problemi. C'è un conflitto di denominazione sepolto da qualche parte? – nkirkes

1

Prova ad aggiungere questo percorso ulteriore:

 context.MapRoute(
      "Admin_default2", 
      "Admin" 
      new { controller = "Dashboard", action = "Index", id = "" } 
     ) 
+0

sì, l'avevo provato, no. Ho provato a metterlo sia nella classe AreaRegistration che nel globale, prima del percorso predefinito. – nkirkes

+1

Hmm, non riesco a farlo funzionare nel mio progetto. Ci lavorerò ancora un po 'più tardi. Nel frattempo, avrai bisogno dello strumento di diagnostica del percorso di Phil Haack disponibile qui: http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx –

0
context.MapRoute(
       "Admin_default3", 
       "Admin/{action}", 
       new { controller = "Admin", action = "Index" } 
       ); 
Problemi correlati