Ne pouvez pas Trouver le Nom de l'Itinéraire sur la Route de Collection
Je reçois ce message d'erreur "Une route nommée "MemberRoute" ne peut pas être trouvé dans la collection de route. Nom du paramètre: nom de". Voici mon Global.asax,
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 l'appelant,
return RedirectToRoute("MemberRoute", new { userId = user.UserId, pseudoName = user.PseudoName });
Pourquoi le nom de la route n'est pas trouvé?
Voir ici: stackoverflow.com/q/8944355/102937
Eh bien, il n'est pas nécessairement l'url ne s'affiche pas correctement. J'ai essayé de le rediriger vers route de chose et en ajoutant le contrôleur/index et autres joyeusetés, mais elle rend l'url ressemble site.com/member?userId=1&pseudoName=jondoe plutôt que de ce que je suis en train de réaliser ce qui est site.com/member/1/jondoe
Eh bien, il n'est pas nécessairement l'url ne s'affiche pas correctement. J'ai essayé de le rediriger vers route de chose et en ajoutant le contrôleur/index et autres joyeusetés, mais elle rend l'url ressemble site.com/member?userId=1&pseudoName=jondoe plutôt que de ce que je suis en train de réaliser ce qui est site.com/member/1/jondoe
OriginalL'auteur Shane LeBlanc | 2012-06-23
Vous devez vous connecter pour publier un commentaire.
Viens de découvrir que cela est dû à la MVC 4 et que toutes les commandes de routage est situé dans le App_Start dossier au sein de l'RouteConfig.cs fichier. Quand j'ai ouvert Mondial.asax.cs il n'y a pas de RegisterRoutes méthode donc je l'ai ajouté moi-même et ajouté mes itinéraires personnalisés mais cela n'a pas fonctionné. Trouvé le RouteConfig fichier et il était là déjà, le RegisterRoutes méthode avec les paramètres par défaut déjà en place. Ajouté mon itinéraire personnalisé là et il fonctionne comme prévu.
OriginalL'auteur Shane LeBlanc