Comme une note de côté, je comprends l'ensemble ambiguous controller names problème et ont utilisé l'espace de nommage pour obtenir mes itinéraires de travail, donc je ne pense pas que ce soit un problème ici.En utilisant Url.RouteUrl() avec la route noms dans une zone
Jusqu'à présent, j'ai mes contrôleurs de niveau du projet, puis une zone d'utilisateur avec l'inscription suivante:
public class UserAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "User";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"UserHome",
"User/{id}",
new { action = "Index", controller = "Home", id = 0 },
new { controller = @"Home", id = @"\d+" }
);
context.MapRoute(
"UserDefault",
"User/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
La route « UserHome » est là pour que je puisse permettre à la route /User/5
par rapport /User/Home/Index/5
qui semble plus propre OMI .
Idéalement, je voudrais utiliser Url.RouteUrl("UserHome", new { id = 5 })
, pour générer le parcours ailleurs, mais cela revient toujours vide ou me donne une exception disant qu'il ne peut pas trouver le nom de la route, qui est évidemment là.
Cependant quand je l'utilise Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
il fonctionne sans problème.
Pourquoi dois-je préciser l'action et contrôleur quand ils ont déjà défaut dans la cartographie de la route? Qu'est-ce que je rate?
Essayez d'ajouter l'espace de noms. – Oasis