Page.RouteData.Values ["参数"]不起作用

use*_*119 8 c# asp.net routing

我创建了一个新的Web窗体(ASP.NET 4.5)项目,我正在尝试使URL路由工作.

RouteConfig.cs 看起来像这样:

routes.MapPageRoute("surveyhome", "survey/home", "~/Survey.aspx");
routes.MapPageRoute("surveyquestions", "survey/questions/{q}", "~/Survey.aspx");
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这样的链接:

<a href="/survey/questions/1">1</a>
Run Code Online (Sandbox Code Playgroud)

它正确加载Survey.aspx页面,所以我知道它部分工作,但这段代码(在该页面的代码隐藏)不起作用:

if (Page.RouteData.Values["q"] != null)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

它始终为空.为什么?

Amm*_*san 1

我已经测试了你的代码,在 ASP.NET 4.0 上没有任何问题。

尝试定义默认值,例如

routes.MapPageRoute("surveyquestions",
    "survey/questions/{q}", "~/Survey.aspx",
    false,
    new RouteValueDictionary 
        { { "q", String.Empty } });
Run Code Online (Sandbox Code Playgroud)

这解决了您的问题吗?