Na marginesie, rozumiem cały problem ambiguous controller names i użyłem przestrzeni nazw, aby moje trasy działały, więc nie sądzę, że jest to problem tutaj.Używanie Url.RouteUrl() z nazwami tras w obszarze
Do tej pory mam kontrolerów poziomie projektu, a następnie w obszarze User z poniższej rejestracji:
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 }
);
}
}
W „UserHome” Trasa jest tak mogę zezwolić na ROUTE /User/5
Vs. /User/Home/Index/5
który wygląda czystsze IMO .
Idealnie chciałbym użyć Url.RouteUrl("UserHome", new { id = 5 })
, aby wygenerować trasę w innym miejscu, ale to zawsze albo wraca puste, albo daje mi wyjątek mówiąc, że nie może znaleźć nazwy trasy, która oczywiście jest tam.
Jednak przy korzystaniu z Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
nie stanowi to problemu.
Dlaczego muszę określić akcję i kontroler, gdy mają już ustawienia domyślne w mapowaniu trasy? czego mi brakuje?
Spróbuj dodać przestrzeń nazw. – Oasis