RouteData.Values保持为空

时间:2014-07-08 13:20:49

标签: c# web routes

我的路线代码如下:

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

现在我想获取表单上的数据,通常它的工作原理如下:

int id = Convert.ToInt32(Page.RouteData.Values["IDP"]);

但每当我尝试从路线获取数据时,例如:http://PC-81/SkillDatenbank/Person/1 我从Value中得不到数据(它是空的!)

我正在使用ASP.Net 4.5和Web窗体。 编辑:我做了一个新的项目并进行了测试,它也没有用 我究竟做错了什么?在上一个项目中它确实像这样工作:( 你能救我吗?

2 个答案:

答案 0 :(得分:3)

您的问题可能位于路由表中。我已经创建了一个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组数据,如下所示:

enter image description here

答案 1 :(得分:3)

以下代码对我有用,我已将其他路线移至该功能的顶部。

另外,在我的情况下,RedirectMode已关闭,因为我在我的代码中使用Jquery并且为了使Web方法有效,我已经关闭了RedirectMode。

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

    var settings = new FriendlyUrlSettings();
    settings.AutoRedirectMode = RedirectMode.Permanent;
    routes.EnableFriendlyUrls(settings);

}