À L'Aide De L'Url.RouteUrl() avec des Noms de routes dans une Zone
Comme une note de côté, je comprends tout ambigu noms de contrôleur problème et ont utilisé namespacing pour obtenir mes itinéraires de travail, donc je ne pense pas que c'est un problème ici.
Jusqu'à présent j'ai mon projet contrôleurs de niveau et ensuite, un Utilisateur de la Zone avec la suite de l'enregistrement:
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 "UserHome" la route est là, alors je peux laisser la route /User/5
vs /User/Home/Index/5
qui semble plus propre de l'OMI.
Idéalement, je voudrais utiliser Url.RouteUrl("UserHome", new { id = 5 })
, pour générer de la route d'ailleurs, mais c'est toujours vient soit de retour vide ou me donne une exception en disant qu'il ne peut pas trouver le nom de la route, ce qui est évidemment là.
Cependant quand j'utilise Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
il fonctionne sans problème.
Pourquoi dois-je spécifier l'action de contrôleur et quand ils ont des valeurs par défaut déjà dans la voie de la cartographie? Ce qui me manque?
OriginalL'auteur ryanulit | 2013-07-18
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si il y a eu un correctif, mais le comportement est un peu différent.
À l'aide de votre code exact et d'essayer:
Maintenant, je reçois des:
Cela a toujours l'air maladroit, si j'ai expérimenté avec la route et a ajouté un autre param par défaut:
Maintenant quand j'utilise
- Je obtenir une belle url de
avertissement Il pourrait y avoir des effets secondaires indésirables de
httproute=true
dans la voie de déclaration.Aussi, le plus prolixe utilisation:
fonctionne toujours aussi bien.
OriginalL'auteur TSmith
Essayez ceci:
OriginalL'auteur Robson Douglas
Je peux le confirmer .NET 4.5.1 et MVC 5.2.2 au minimum, que ce problème a été corrigé et travaille maintenant comme c'est avec ce même code à l'aide de
Url.RouteUrl("UserHome", new { id = 5 })
.Il semble que c'était un bug qui a été corrigé depuis le temps de mon post.
L'ajout de ce que la réponse puisque, bien que TSmith de la solution de travail, vous n'avez plus besoin de faire du travail supplémentaire qu'il existe aujourd'hui un correctif.
OriginalL'auteur ryanulit