我的路线代码如下所示:

 RouteTable.Routes.MapPageRoute("IDP", "Person/{IDP}", "~/Person.aspx")

现在我想获取表单上的数据,通常它是这样工作的:
int id = Convert.ToInt32(Page.RouteData.Values["IDP"]);

但是每次我尝试从路由中获取数据时,例如:http://PC-81/SkillDatenbank/Person/1我没有从值中得到数据(它是空的!)

我在 Web 窗体中使用 ASP.Net 4.5。
编辑:我创建了一个新项目并进行了测试,但它也不起作用
我究竟做错了什么?在上一个项目中它确实是这样工作的:(
你能帮助我吗?

最佳答案

您的问题可能位于您的路由表中。我创建了一个 WebForms 项目来测试这一点。

打开您的 Global.asax(或您存储 RouteConfig 的任何位置;默认为 App_Start/RouteConfig.cs)并检查您的 RegisterRoutes 方法。向其中添加以下行(如果尚不存在)。

void RegisterRoutes(RouteCollection routes)
{
    var settings = new FriendlyUrlSettings();
    settings.AutoRedirectMode = RedirectMode.Permanent;
    routes.EnableFriendlyUrls(settings);

    /* ... additional routes */
    routes.MapPageRoute("","Person/{IDP}", "~/Person.aspx");
}

在您的 Application_Start 中应该有这样一行,如果您使用 App_Start 文件夹中的默认配置: RouteConfig.RegisterRoutes(RouteTable.Routes);
如果您在 global.asax.cs 中定义了路由,则它只是 RegisterRoutes(RouteTable.Routes);
如果您现在通过 http://PC-81/SkillDatenbank/Person/1 访问您的页面,RouteData 字典将包含 1 组数据,如下所示:

10-08 18:34