Page.RouteData.Values对于一个页面是空的而不是另一个页面

时间:2013-12-23 15:00:07

标签: asp.net url-routing friendly-url

我使用Microsoft.AspNet.FriendlyUrls在ASP.NET c#WebForms中工作,但所有页面都

以下是一个例子:

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx");

在page_load中的上述页面(List.aspx)中,Page.RouteData中没有values.count。

Page.RouteData.Values.Count == 0

我在同一网站上有另一页与此信息匹配:

routes.MapPageRoute("{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "~/place.aspx");

此页面(place.aspx)始终显示正确的路径计数。

在调试模式的List页面上,我检查了查询字符串和位置,ZipCode就在那里。

那么,什么可能导致Page.RouteData不在一个页面中显示但在另一个页面中可用?

1 个答案:

答案 0 :(得分:7)

我是url路由的新手,但我想我遇到了类似的问题,并找到了解决方案。你试过了吗?

routes.MapPageRoute("ListDetails/{Location}/{ZipCode}/", "ListDetails/{Location}/{ZipCode}/", "~/List.aspx");

而不是

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx");

在我的情况下,我有:

routes.MapPageRoute(
    "ImageDelete",
    "Admin/Images/Delete/{nameToKill}",
    "~/Admin/Images.aspx"
);

显示Page.RouteData.Values始终为空。

当我将其更改为

routes.MapPageRoute(
    "ImageDelete",
    "Admin/Image/Delete/{nameToKill}", // mind the missing 's'
    "~/Admin/Images.aspx"
);

有效!

我认为该路线可能不会以实际存在的网站的网址开头。