0

ASP.NET c# 项目...试图做一个非常简单的页面路由。

请注意,我知道这实际上并没有做任何动态路由......我有这样的 id 硬编码是有原因的。

例子:

  RouteTable.Routes.MapPageRoute("Test", "ABC", "~/Test.aspx?id=101");

我可以浏览http://www.mysite.com/ABC 没问题,页面 Test.aspx 加载,路由按预期工作。

但是……我的id=101去哪儿了?

  Request.QueryString["id"] \\ is null...
  Page.RouteData.Values["id"] \\ is null...

如何获取路由目标资源中的硬编码 id?

4

1 回答 1

0

我通过传递 DataTokens 让它工作。

在我的现实世界场景中,我不知道 URL 参数是什么(可能只是我的问题中的“id”......或者可能有其他人,有时没有),所以我必须执行以下操作:

首先检查是否有“?” 路由目标中的字符...如果有,则:

  1. 在“?”之后运行字符串 通过 HttpUtility.ParseQueryString 的字符
  2. 然后,遍历该集合并将它们添加到 System.Web.Routing.RouteValueDictionary
  3. 然后最后添加路由,将 DataTokens 属性设置为 RouteValueDictionary
于 2013-11-01T06:18:57.857 回答