路由RouteValueDictionary url作为第二项问题

时间:2011-03-12 21:22:19

标签: c# asp.net c#-4.0 routing

我发送URL作为RouteValue项有问题,并使用一个参数获取GetVirtualPath。

 var parameters = new RouteValueDictionary { 
       { CommonUrl.UrlParameters.AnyString, "ItISAnyString"},
       {CommonUrl.UrlParameters.ReturnUrl, "test/myPage/Index"}   
  };

使用以下参数获取网址:

RouteTable.Routes.GetVirtualPath(null, anyRouteName, **parameters**).VirtualPath

所以我得到的网址如http://localhost/ItISAnyString/ test / myPage / Index

系统避开了这个页面而感到厌烦404。 但如果我手动做这样的事情 http://localhost/ItISAnyString/测试$ $ MYPAGE索引 一切正常。 我认为应该有更好的方法来解决这个问题。

修改

我发现,对于此路线,如果有更多的一个'/'符号,请{}禁止第二个参数。所以我会创造它,看看有什么好处。

修改

我的大学很遗憾,当我把它作为参数发送时我必须对URL进行编码。 好的,我做到了。 但现在我有400错误。 对我来说有点奇怪。

1 个答案:

答案 0 :(得分:0)

问题出在映射模式中。 我刚刚在路线图中添加了{*}模式。 现在我的global.asax代码:

routes.MapPageRoute(RouteName.Security.TestOne,
                                            Test, 
                                            "~/Web/Pages/Test/test.aspx", true);

  public static string Test = String.Format("{0}/{1}/{2}/{3}",
                                                                            "Test",
                                                                            "Testconfirm",
                                                                            "{" + CommonUrl.UrlParameters.FirstParam+ "}",
                                                                            "{*****" + CommonUrl.UrlParameters.Url + "}");

此概念名称为“在URL模式中处理可变数量的段” http://msdn.microsoft.com/en-us/library/cc668201.aspx