【发布时间】:2011-09-13 19:27:33
【问题描述】:
我直接使用 ASP.NET UrlRoutingModule(不通过 MVC)将某些路由映射到它们的处理程序:
RouteTable.Routes.Add(new Route("products/{name}", handler));
然后,在请求时,我从每条路由中获取值:
RouteData routeData = HttpContext.Current.Request.RequestContext.RouteData;
routeData.Values.TryGetValue("name", out value);
到目前为止一切都很好,我得到了每条路线的正确值。我的问题是编码:我想获取路线数据的 raw 值。示例:对于上面的路由,如果请求的 URL 是 http://example.com/products/word%2Dword,则结果“名称”是“word-word”。我想要的是确切的值“word%2Dword”。
我知道在 ASP.NET 中,我可以使用 Request.ServerVariables["HTTP_URL"] 获取未处理的原始 URL,但不幸的是我不能在这里使用它。
任何帮助将不胜感激。
谢谢
编辑
我的具体问题是我想在一个请求中使用它们的名称获取更多产品。例如,我有以下产品名称:“student,pupil”和“sick,ill”(他们的名字包含逗号)。我还在请求中使用逗号分隔名称。
我在客户端处理编码,因此 GET 请求如下所示:http://example.com/products/student%2Cpupil,sick%2Cill(我正在分别对每个名称进行编码,但我没有对分隔符进行编码)。
在服务器端,“name”参数将由 ASP.NET 自动解码,结果是:“student,pupil,sick,ill”所以现在我不知道哪个是分隔符。 Request.ServerVariables["HTTP_URL"] 返回我想要的 URL ("products/student%2Cpupil,sick%2Cill") 所以我想必须有一种方法来获取原始值路线数据。
【问题讨论】:
标签: asp.net url-routing