|
|
1
23
很遗憾,无法获取路由的路由名称,因为该名称不是路由的属性。向RouteTable添加路由时,该名称将用作路由的内部索引,并且不会公开。
注册路由时,请使用路由名称在路由上设置一个DataToken,并使用它筛选路由。 最简单的方法是编写自己的扩展方法来映射路由。 |
|
|
2
11
所以现在在Global.asax.cs中注册路由时,不要像routes.MapPageRoute(…)-而是使用扩展方法并执行routes.MapPageRouteWithName(…)
就这样。没有反射,对“route name”的唯一硬编码引用在两个扩展方法中(如果您真的想的话,可以用const替换)。 |
|
|
3
11
如果您使用的是需要检查的重要路由的一小部分(一两个特例),您可以这样做:
除此之外,您应该花费@haacked解决方案所需的(最少)时间。 |
|
|
4
7
下面是@haacked建议的一个实现——还有一个简单的“razor”表来显示路由数据。 注意:您可能还没有意识到所有标准的“MapRoute”方法实际上都是扩展方法。所以我们不能用同一个名字。我刚刚把它叫做“MapRoute2”,因为现在我能想到的就是这个。 必须用对MapRoute2的调用替换对MapRoute的所有调用,不要忘记所有AreaRegistration文件以及global.asax.cs 扩展方法:
下面是一个简单的razor.cshtml文件,我使用它来显示路由信息:
|
|
|
5
6
我会投票给西蒙韦弗的答案,但不幸的是,我只是加入了,没有这样做的声誉点。 加上他的回答,因为这正是我要找的,我是这样做的: 我有一个公共枚举“PageRouteTable”:
我在生成路由时使用此枚举:
然后我创建了一个页面扩展方法:
现在在我的页面中,我可以简单地使用一个开关来操作它:
--快乐的编码。 |
|
|
6
3
RouteCollection 维护命名路由的私有字典。 路线名称可以通过
下面的扩展方法遵循以下过程:
|
|
|
7
2
然后在需要路由的方法中,可以调用以下命令:
在global.asax中设置一个字符串,然后根据需要使用。 |
|
|
8
1
我一直面临着同样的困境,我得出的结论是,不幸的是,似乎没有办法找出ASP.NET选择的使用路径(按其名称)。
似乎您只能通过路由中可能存在的参数的名称来确定这些参数将显示在
如果有人知道如何获取ASP.NET为给定URL选择的路由的实际名称,我也很想知道如何做到这一点! |
|
|
9
1
您可以添加每个路由参数,而这些参数不必出现在您的Url中: 您可以将路由名称作为一个参数,如inGlobal.asax:
并在您的页面中访问它:
最好的方法不难。 |
|
|
10
0
示例(vb.net)
|