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

Jer*_*one 4 asp.net friendly-url url-routing

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

这是一个例子:

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx");
Run Code Online (Sandbox Code Playgroud)

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

Page.RouteData.Values.Count == 0
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

Til*_*ito 8

我是url路由的新手,但我想我遇到了类似的问题并找到了解决方案.你有没有尝试过:

routes.MapPageRoute("ListDetails/{Location}/{ZipCode}/", "ListDetails/{Location}/{ZipCode}/", "~/List.aspx");
Run Code Online (Sandbox Code Playgroud)

代替

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx");
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我有:

routes.MapPageRoute(
    "ImageDelete",
    "Admin/Images/Delete/{nameToKill}",
    "~/Admin/Images.aspx"
);
Run Code Online (Sandbox Code Playgroud)

它显示Page.RouteData.Values总是为空.

当我把它改成

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

有效!

我认为路线可能不是以实际存在的网站的URL开头.

  • 哇,谢谢你告诉我应该在文档中有用的东西https://msdn.microsoft.com/en-us/library/dd329551(v=vs.100).aspx (2认同)