QueryString
和Request
中RouteData.Values
之间的差异是什么?
我们可以改用它们吗?
答案 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
如果匹配变量名,则会捕获查询字符串中的每个值。