【问题标题】:RouteTable.Routes.MapPageRoute with optional parameter带有可选参数的 RouteTable.Routes.MapPageRoute
【发布时间】:2013-02-12 20:50:29
【问题描述】:

我在一个 ASP.Net 4.0 Web 表单应用程序中。

我在 Global.asax 中已经有这个路由并且正在工作:

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

“状态”参数可以让我将页面上的活动标签设置为状态、博客、照片或关于(默认为状态)。

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

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

我需要做的是呈现一些链接,这些链接会将用户带到带有博客 ID 的博客选项卡,这样我就可以登陆显示多个博客的博客选项卡,并按 ID 滚动到特定的博客。我正在尝试设置类似于我们在 MVC 中的操作方式的 href:/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}" } });

感谢您的帮助。

【问题讨论】:

    标签: asp.net routes


    【解决方案1】:

    我认为您应该查看项目集合。

        this.Context.Items["userid"]
    

    或在 4.0 的 RoutData 集合中

        Page.RouteData.Values["userid"]
    

    查看此链接以获取信息How to: Access URL Parameters in a Routed Page

    【讨论】:

      【解决方案2】:

      如下使用:

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

      谢谢:asp.net webforms routing: optional parameters

      【讨论】:

        猜你喜欢
        • 2021-02-28
        • 2016-10-17
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 2012-07-16
        • 2017-03-28
        • 1970-01-01
        相关资源
        最近更新 更多