RouteValues vs QueryString MVC?

时间:2012-12-30 12:01:45

标签: c# asp.net-mvc routes

QueryStringRequestRouteData.Values之间的差异是什么?
我们可以改用它们吗?

1 个答案:

答案 0 :(得分:13)

只有在global.asax中定义时才从查询字符串收集RouteValues,例如:

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

将从yourdomain/testController/testAction/14/myTestValue中捕获到来的值 其中RouteData.Values["inRouteValues"]将是值为“myTestValue”的字符串。
但是如果你要构建像yourdomain/testController/testAction/14?inRouteValues=myTestValue这样的网址,它就不会得到它。不同之处在于,RouteData.Values只会从您的global.asax中获取与RouteCollection匹配的网址中的值,QueryString如果匹配变量名,则会捕获查询字符串中的每个值。