2010-01-11 17 views
5

Trouble Esto debe ser simple, pero por desgracia ...el establecimiento de un controlador por defecto en MVC 2 RC Área

he establecido un área de administración dentro de mi proyecto MVC 2 (áreas de proyectos individuales). Creé un par de controladores y sus respectivas carpetas de vistas. En el método AreaRegistration.RegisterArea, he especificado que yo quiero que el controlador por defecto sea "tablero de instrumentos":

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

Si yo acceda a la URL/admin/tablero de instrumentos, el índice viene muy bien. Lo que quiero, sin embargo, es permitir que el usuario vaya a url/Admin/y vea lo mismo. Cuando hago esto, sin embargo, obtengo "El recurso no se puede encontrar".

Me acabo de mojar los pies con la implementación del Área MVC 2, y no creo que esté haciendo algo demasiado complicado ... ¿Alguien tuvo el mismo problema? ¿Debo especificar una ruta diferente, quizás en el nivel raíz, fuera del área?

+0

Por cierto, que el parámetro de matriz de cadena al final de la llamada MapRoute es ajeno, He intentado añadir que en un intento de ignorantes a solucionar el problema, pero ya que no hay un conflicto nombre del controlador en el resto de la proyecto, creo que es inútil en este caso. – nkirkes

+0

¿Alguna suerte con esto? – Andrew

+0

Aún no. Tuve que dejar el proyecto de lado por un par de días para otras prioridades. Sin embargo, volveré a cavar esta tarde. Por el tiempo que acabo de vincular directamente a la ruta Área/Controlador/Acción que pretendía que fuera el predeterminado. – nkirkes

Respuesta

1

Ok, impar. Así que agregué un área diferente, apropiadamente llamada "Administración", establecí el controlador predeterminado y agregué el controlador apropiado, vista, etc. y funcionó. ¿La diferencia? En mi primer caso, estaba usando "Admin" como el área.

+4

Esto garantiza una mayor investigación como Me gustaría saber por qué "Admin" estaba causando problemas. ¿Hay algún conflicto de nombres enterrado en alguna parte? – nkirkes

1

Trate de añadir esta ruta adicional:

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

sí, lo había intentado, no ir. Traté de ponerlo tanto en la clase de Registro de área como en la global, antes de la ruta predeterminada. – nkirkes

+1

Hmm, tampoco puedo hacer que funcione en mi proyecto. Trabajaré en eso más adelante. Mientras tanto, necesitarás la herramienta de diagnóstico de rutas de Phil Haack disponible aquí: 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" } 
       ); 
Cuestiones relacionadas