带有可选参数的RouteTable.Routes.MapPageRoute

时间:2013-02-12 20:50:29

标签: asp.net routes

我在ASP.Net 4.0网络表单应用程序中。

我已在Global.asax中使用此路由并正在工作:

RouteTable.Routes.MapPageRoute("status", "members/{userid}/{status}", "~/members/status.aspx");

'status'参数可让我将页面上的活动标签设置为状态,博客,照片或约(默认为状态)。

所以当我发帖到:/members/status.aspx?userId = first.last

页面加载时我会看到/members/first.last/status。

我需要做的是渲染一些链接,这些链接会将用户带到博客标签上,并带有博客ID,这样我就可以登录博客标签,其中显示了多个博客,并按ID滚动到特定的博客。我试图将href设置为类似于我们在MVC中的操作方式:/members/first.last/blog/1000(其中1000是博客ID) - 我的另一个尝试是/members/first.last/blog/?id = 1000但我永远无法在Page_Load中的查询字符串键中看到Id。

我尝试添加此路由无效:

RouteTable.Routes.MapPageRoute("status",
    "members/{userid}/{status}/{*queryvalues}", "~/members/status.aspx",
    false,
    new RouteValueDictionary { { "id", @"\d{4}" } });

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我认为你应该查看物品集合。

    this.Context.Items["userid"]

或适用于4.0的RoutData集合

    Page.RouteData.Values["userid"]

请参阅此链接以获取信息How to: Access URL Parameters in a Routed Page

答案 1 :(得分:1)

使用如下:

routes.MapPageRoute(
       "ProductsBrowse",
        "browse/{BrowseBy}/{Category}/{*queryvalues}",
        "~/Pages/Products/Browse.aspx"
    );

Thx:asp.net webforms routing: optional parameters