问题描述
|
我直接使用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);
到目前为止,一切都很好,我正在为每条路线获取正确的值。我的问题是编码:我想获取路线数据的原始值。示例:对于上述路由,如果请求的URL为http://example.com/products/word%2Dword,则生成的\“ name \”为\“ word-word \”。我想要的是确切的值\“ word%2Dword \”。
我知道,使用ASP.NET可以使用Request.ServerVariables [\“ HTTP_URL \”]获取未经处理的原始URL,但不幸的是,我无法在此使用它。
任何帮助,将不胜感激。
谢谢
编辑
我的特定问题是,我希望使用它们的名称在单个请求中获得更多产品。例如,我有以下产品名称:\“ student,pupil \”和\“ sick,ill \”(它们的名称包含逗号)。我还使用逗号分隔请求中的名称。
我在客户端处理编码,因此GET请求看起来像这样:http://example.com/products/student%2Cpupil,sick%2Cill(我分别编码每个名称,但不编码分隔器)。
在服务器端,ASP.NET会自动解码“ name”参数,结果是:“学生,学生,生病,生病”,所以现在我不知道哪个是分隔符。 Request.ServerVariables [\“ HTTP_URL \”]返回所需的URL(\“ products / student%2Cpupil,sick%2Cill \”),因此我想必须有一种方法来获取原始值作为路由数据。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)