2010-01-11 5 views
5

Dies sollte einfach sein, aber leider ...Ärger einen Standard-Controller in MVC 2 RC Area setting

Ich habe einen Admin-Bereich in meinem MVC 2-Projekt (Einzelprojektbereiche) eingerichtet. Ich habe ein paar Controller und ihre jeweiligen Ansichtsordner erstellt. Im AreaRegistration.RegisterArea Methode habe ich angegeben, dass ich die Standard-Controller als „Armaturenbrett“ will:

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

Wenn ich mit url/Admin/Dashboard navigieren, kommt der Index gut. Aber ich möchte, dass der Benutzer zu URL/Admin/geht und dasselbe sieht. Wenn ich das mache, bekomme ich "Die Ressource kann nicht gefunden werden".

Ich bin nur nass mit MVC 2 Bereich Implementierung, und ich glaube nicht, dass ich etwas übermäßig kompliziert mache ... Wer hatte das gleiche Problem? Muss ich eine separate Route angeben, vielleicht auf der Root-Ebene?

+0

BTW, dass String-Array param am Ende des MapRoute Anrufs ist fremd, habe ich versucht, es in einem unwissenden Versuch, das Problem zu lösen geben, aber da gibt es keine Controller Namenskonflikt in dem Rest der Projekt, ich denke, es ist in diesem Fall nutzlos. – nkirkes

+0

Haben Sie Glück dabei? – Andrew

+0

Noch nicht. Ich musste das Projekt für ein paar Tage für andere Prioritäten beiseite legen. Ich werde heute Abend nochmal graben. In der Zwischenzeit habe ich mich direkt mit der Route/Controller/Action-Route verbunden, die ich als Standard festlegen wollte. – nkirkes

Antwort

1

Ok, ungerade. Also habe ich einen anderen Bereich hinzugefügt, passend "Administration" genannt, den Standard-Controller gesetzt und den passenden Controller, View etc. hinzugefügt und es hat funktioniert. Der Unterschied? In meinem ersten Fall habe ich "Admin" als Bereich verwendet.

+4

Dies rechtfertigt weitere Forschung als Ich würde gerne wissen, warum "Admin" Probleme verursacht. Gibt es irgendwo einen verschütteten Namenskonflikt? – nkirkes

1

Versuchen Sie, diese zusätzliche Route hinzufügen:

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

Ja, ich hatte es versucht, nein. Ich habe versucht, es sowohl in die AreaRegistration-Klasse als auch in die globale vor der Standardroute zu setzen. – nkirkes

+1

Hmm, ich kann es auch nicht in meinem Projekt arbeiten. Ich werde später daran arbeiten. In der Zwischenzeit benötigen Sie Phil Haacks Route Diagnostic Tool hier: 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" } 
       );