2012-12-30 15 views

Odpowiedz

12

RouteValues ​​są zbierane z kwerendy tylko jeśli są zdefiniowane w global.asax, na przykład:

routes.MapRoute(
"Example", // Route name 
"{controller}/{action}/{id}/{inRouteValues}", // URL with parameters 
new { controller = "Home", action = "Index" } // Parameter defaults 
); 

złapie inRouteValues ​​z yourdomain/testController/testAction/14/myTestValue gdzie RouteData.Values["inRouteValues"] będzie ciąg z wartości "myTestValue".
Ale jeśli zbudujesz URL taki jak yourdomain/testController/testAction/14?inRouteValues=myTestValue, to go nie dostanie. Różnica polega na tym, że RouteData.Values pobiera tylko wartości z adresów URL pasujących do RouteCollection z pliku global.asax, a QueryString przechwytuje każdą wartość z kwerendy, jeśli pasuje do nazwy zmiennej.