ASP.NET Routing可选的第一个参数

时间:2013-05-28 22:20:55

标签: asp.net vb.net routing

我是新的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控件以匹配它们。

我希望我已经表明了自己的意见,并感谢社区可以给予的任何帮助。

2 个答案:

答案 0 :(得分:0)

将用户名本身放在URL中会有些不典型。实际的用户身份/名称通常是从某些已建立的安全上下文/令牌(例如cookie)中提取的,因此您可以对匿名页面和个性化页面使用相同的URL。您是否有特定原因希望在URL中拥有用户名?

答案 1 :(得分:0)

如果使用GetRouteUrl方法,则不需要直接匹配路由名称。这样你仍然可以使用你需要的两条路线来完成这项工作。请参阅完整示例here