我的路线代码如下所示:
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 字典将包含一组数据,如下所示:
关于c# - RouteData.Values 保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632979/