Próbujemy użyć niestandardowych tras w aplikacji ASP.NET MVC do wygenerowania tego adresu URL: 'http://example.com/Person/unnecessaryinfo-42'
. "Unnecessaryinfo" to nazwa identyfikatora, która spowoduje, że adres URL będzie hakowany dla użytkownika. Poniżej znajduje się kod naszej mapy tras. To działa, ale moja akcja kontrolera kończy się na "niepotrzebneinfo-42" w parametrze id. Czy mogę usunąć "niepotrzebne info-" zanim osiągnie działanie kontrolera?Jak usunąć niepotrzebne informacje z przyjaznego dla użytkownika adresu URL, zanim dojdzie do działania kontrolera?
routes.MapRoute("person_id", "person/{id}",
new { controller = "Customer", action = "Details" },
new { id = @"unnecessaryinfo-\d" });
Edit:
Oto nasz najnowszy kod:
routes.MapRoute("person_id", "person/{unnecessaryinfo}-{id}",
new { controller = "Customer", action = "Details" },
new { id = @"[\d]{1,6}" });
W rozdziale Routing z ASP.NET MVC 2 In Action (strona 234) omawia unikanie stosowania identyfikatorów baz danych w miarę możliwości, ale jeśli trzeba z nich korzystać , dodając dodatkowe informacje, aby odczytać URL. Właśnie tego próbujemy (bezskutecznie). Identyfikator bazy danych waha się obecnie od 1 do 6 cyfr (i może rosnąć wraz z upływem czasu).
Próbowałem dokładnie to, co masz powyżej i nadal daje mi "niepotrzebne info-id" w kontroler. Nie rozumiem także, co masz na myśli, mówiąc: "Możesz również dodać ograniczenie regex do niepotrzebnego tokena trasy". – rkgallegos
Jakiego adresu używasz? '~/customer/details/foobarunotrzebessary-5' i' public ActionResult Details (string id) 'dadzą ci' id = 5' w akcji kontrolera.Zauważ też, że '\ d' oznacza ** pojedynczą cyfrę **. Jeśli użyjesz '~/customer/details/foobarunnecessary-123' i nadal będziesz mieć domyślną trasę na końcu (' {controller}/{action}/{id} '), to ta domyślna trasa będzie pasować, a nie Twoja niestandardowa trasa a otrzymasz 'id = foobarunnecessary-123' w akcji kontrolera. –
Końcowy adres URL, do którego próbujemy się dostać, to ~/Person/unnecessaryinfo-42, a liczba cyfr będzie się różnić i może wynosić od 1 do 6 lub więcej. – rkgallegos