Als eine Randnotiz verstehe ich das ganze ambiguous controller names Problem und Namespacing verwendet, um meine Routen arbeiten, so dass ich glaube nicht, dass das ein Problem hier ist.Verwenden von Url.RouteUrl() mit Route Namen in einem Bereich
Bisher habe ich meine Projektebene Controller und dann einen Benutzerbereich mit der folgenden Anmeldung:
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 }
);
}
}
Die „Userhome“ Weg ist es, damit ich die Strecke /User/5
gegen /User/Home/Index/5
die sauberere IMO sieht erlauben .
Idealerweise würde ich gerne Url.RouteUrl("UserHome", new { id = 5 })
verwenden, um die Route anderswo zu generieren, aber das kommt immer entweder leer zurück oder gibt mir eine Ausnahme, dass es den Routennamen nicht finden kann, der offensichtlich da ist.
Aber wenn ich Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
verwende, funktioniert es kein Problem.
Warum muss ich die Aktion und den Controller angeben, wenn sie bereits Standardwerte in der Routenzuordnung haben? Was vermisse ich?
Versuchen Sie, den Namespace hinzuzufügen. – Oasis