Come nota a margine, ho compreso l'intero problema ambiguous controller names e ho utilizzato lo spazio dei nomi per far funzionare i percorsi, quindi non penso che sia un problema qui.Utilizzo di Url.RouteUrl() con i nomi delle route in un'area
Finora ho i miei regolatori di livello di progetto e quindi un'area dell'utente con il seguente registrazione:
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 }
);
}
}
Il "UserHome" percorso c'è così posso permettere il percorso /User/5
vs /User/Home/Index/5
che sembra più pulito IMO .
Idealmente mi piacerebbe utilizzare Url.RouteUrl("UserHome", new { id = 5 })
, per generare il percorso altrove, ma questo sempre o torna vuoto o mi dà un'eccezione dicendo che non riesce a trovare il nome del percorso, che è ovviamente lì.
Tuttavia quando uso Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
non funziona alcun problema.
Perché è necessario specificare l'azione e il controller quando sono già presenti dei valori predefiniti nella mappatura del percorso? Cosa mi manca?
Provare ad aggiungere lo spazio dei nomi. – Oasis