我是新的ASP.NET路由并有一个问题。
在我正在开发的网站上,访问者注册并创建一个帐户(带有显示名称),例如JohnDoe和网站个性化,以及与显示名称相关的信息。
例如(按路由表的顺序,我目前有):
http://www.domain.com/ - Generic index page
http://www.domain.com/Page1 - Generic page1
http://www.domain.com/Page2 - Generic page2
http://www.domain.com/JohnDoe - Personalised index page
http://www.domain.com/JohnDoe/Page1 - Personalised page1
http://www.domain.com/JohnDoe/Page2 - Personalised page2
以上工作正常(我只是对每一种可能性都有规则)。
我的问题是,我现在需要在网站的页面上创建asp:HyperLink控件。目前,我正在使用它:
NavigateUrl="<%$ RouteUrl:RouteName=ROUTENAME %>"
....在HyperLink控件的标签中
如果给出以下地址,我该怎么办......
http://www.domain.com/Example - Generic example page
http://www.domain.com/JohnDoe/Example - Personalised example page
....匹配ROUTENAME,第一个参数可以选择吗?
我显然可以创建两条路线,如下所示....
Routes.MapPageRoute("Example_No_Displayname", "Example", "~/Example.aspx")
Routes.MapPageRoute("Example_With_Displayname", "{Code}/Example", "~/Example.aspx")
....但这意味着路由名称需要不同,我需要绑定Hyperlink控件以匹配它们。
我希望我已经表明了自己的意见,并感谢社区可以给予的任何帮助。
答案 0 :(得分:0)
将用户名本身放在URL中会有些不典型。实际的用户身份/名称通常是从某些已建立的安全上下文/令牌(例如cookie)中提取的,因此您可以对匿名页面和个性化页面使用相同的URL。您是否有特定原因希望在URL中拥有用户名?
答案 1 :(得分:0)
如果使用GetRouteUrl方法,则不需要直接匹配路由名称。这样你仍然可以使用你需要的两条路线来完成这项工作。请参阅完整示例here。