c# - RouteData.Values 保持为空

标签 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 我没有从值中得到任何数据(它是空的!)

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

最佳答案

您的问题可能出在您的路由表中。我创建了一个 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");
}

如果您在 App_Start 文件夹中使用默认配置,在您的 Application_Start 中应该有这样一行:RouteConfig.RegisterRoutes(RouteTable.Routes);

如果您在 global.asax.cs 中定义了路由,它只是 RegisterRoutes(RouteTable.Routes);

如果您现在通过 http://PC-81/SkillDatenbank/Person/1 访问您的页面,RouteData 字典将包含一组数据,如下所示:

enter image description here

关于c# - RouteData.Values 保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632979/

相关文章:

c# - 如何强制处理对象/GC

c# - 我的深拷贝不是真正的深拷贝

android - 将网站下载到字符串

asp.net-mvc - ASP.NET MVC,URL 路由 : Maximum Path (URL) Length

c# - 在非管理员帐户下运行自托管的 OWIN Web API

c# - Windows 商店中的非公共(public)成员(member)访问权限

html - Bootstrap 导航栏下拉菜单背景不起作用

spring - 根据启动 Spring MVC 时指定的模式启用/禁用不同的 Controller 集

asp.net-mvc - 从 Multi-Tenancy asp.net mvc 应用程序中的 url 识别租户

javascript - Angular 2 - 使用 Angular-route 3.3.0 覆盖路线