2012-06-23 3 views
7

Recibo este error "No se encontró una ruta llamada 'MemberRoute' en la colección de rutas. Nombre del parámetro: nombre". Aquí está mi Global.asax,No se encuentra el nombre de la ruta En Route Collection

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute(
      "MemberRoute",      // routeName 
      "member/{userId}/{pseudoName}", // url 
      new 
      {       // url defaults 
       controller = "Member", 
       action = "Index", 
       userId = 0, 
       pseudoName = UrlParameter.Optional 
      }, 
      new 
      {       // url constraints 
       userId = @"\d+" // must match url {userId} 
      } 
     ); 
    } 

    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
    } 
} 

MemberController,

public ActionResult Index(int userId, string pseudoName) 
    { 
     User user; 
     var unitOfWork = new UnitOfWork(); 
     user = unitOfWork.UserRepository.GetById(userId); 

     var expectedName = user.PseudoName.ToSeoUrl(); 
     var actualName = (pseudoName ?? "").ToLower(); 

     // permanently redirect to the correct URL 
     if (expectedName != actualName) 
      return RedirectToActionPermanent("Index", "Member", new { id = user.UserId, pseudoName = expectedName }); 
     return View(user); 
    } 

de llamadas,

return RedirectToRoute("MemberRoute", new { userId = user.UserId, pseudoName = user.PseudoName }); 

¿Por qué no se está encontrando el nombre de la ruta?

+0

Vea aquí: http://stackoverflow.com/q/8944355/102937 –

+0

Bueno, no es necesariamente que la url no se muestre correctamente. Intenté redireccionar para enrutar y agregar el controlador/índice y otras cosas, pero hace que la URL parezca a site.com/member?userId=1&pseudoName=jondoe en lugar de a lo que estoy tratando de lograr, que es site.com/member/ 1/jondoe –

Respuesta

7

Venga a descubrir que esto se debe a MVC 4 y que todo el enrutamiento personalizado se encuentra en la carpeta App_Start dentro del archivo RouteConfig.cs. Cuando abrí Global.asax.cs no había ningún método RegisterRoutes, así que lo agregué yo mismo y agregué mis rutas personalizadas, pero no funcionó. Encontré el archivo RouteConfig y ya estaba, el método RegisterRoutes con los valores predeterminados ya configurados. Agregué mi ruta personalizada allí y funciona como se esperaba.

Cuestiones relacionadas