Mam aplikację MVC3 z kilkoma trasami. Dwa z nich są zdefiniowane następująco:Url.Action nie daje oczekiwanego wyniku. Niepożądane wartości trasy pozostają
routes.MapRoute(
null,
"System/{name}", // URL with parameters
new { controller = "Systems", action = "Index" } // Parameter defaults
);
routes.MapRoute(
null,
"Carrier/{name}", // URL with parameters
new { controller = "Carriers", action = "Index" } // Parameter defaults
);
Teraz, w moim menu mam dwa linki do tych tras, które są tworzone przy użyciu Url.Action:
Url.Action("Index","Systems")
Url.Action("Index","Carriers")
Teraz, kiedy uruchomić aplikację, wszystko Wydaje się być w porządku, a łącza w menu są wyświetlane jako /System/
i /Carrier/
i jest to oczekiwana wartość.
Jednak, kiedy przejść do na przykład /System/MySystem
na stronie internetowej i będzie nadal chcesz łącza punkt do tego samego miejsca, ale teraz one wskazywać /System/MySystem
i /Carrier/MySystem
.
Próbowałem wiele rzeczy, aby łącze nie używało nazwy od wartości trasy, ale bez skutku. Najdziwniejszy przypadek doświadczyłem kiedy próbowałem to:
Url.Action("Index","Systems", new{name = (string)null})
Teraz link pojawił się jako
/System?name=MySystem
Czy istnieje dobry sposób, żeby upewnić się, że wartość nazwę od wartości trasa nie ingerować w te linki w jakikolwiek sposób?
Miałem nadzieję na coś bardziej eleganckiego, ale przynajmniej to robi. Dzięki. –