如何隐藏URL中的ID

时间:2011-08-10 11:52:40

标签: c# asp.net routing

net 4和c#with Routing。

我想知道如何从GetRouteUrl(或其他方式)传递DataToken中的值。

我的目标是创建一个像“mysite.com/category-title”这样的网址 并传递(隐藏在网址categoryId),但在目标网页中,我想检索隐藏的categoryId进行过滤。

目前我尝试使用DataTokens完成此操作,但没有结果。

我的问题:

  • 如何隐藏路由生成的Url中的Id并传递隐藏的Id?
  • 我的方法是否正确(使用DataTokens)?任何更好的主意(请提供代码示例)

感谢您抽出宝贵时间。

<asp:HyperLink runat="server" Text='<%# Eval("Title") %>' NavigateUrl='<%# GetRouteUrl( new { Title = Eval("Title") }) %>'></asp:HyperLink>

   public static void RegisterRoutes(RouteCollection routes)
    {
            // Ex: mysite.com/category-title/
        routes.MapRouteCategoryView("myRouteName", "{Title}");
    }

我会

public static void MapRouteCategoryView(this RouteCollection routes, string name, string url)
        {
            // Page Handler map filter to physical path.
            PageRouteHandler handler = new PageRouteHandler("~/Cms/FrontEndCms/CategoryView.aspx");
            // Create the Route.
            CustomRoute myRoute = new CustomRoute(url, handler);
            // Setting the Route.
            //myRoute.Constraints = new RouteValueDictionary { { "CategoryId", @"\d+" } }; // Only valid Int for Id.
            myRoute.DataTokens = new RouteValueDictionary { { "RouteName", name } };
            // Add the Route to RouteCollection.
            routes.Add(myRoute);
        }

2 个答案:

答案 0 :(得分:1)

您可以尝试加密QueryString中的categoryID。

答案 1 :(得分:0)

如果您使用的是最新版本的IIS,则可以使用URL Rewrite模块。

我通常使用URL通过路由映射到的查询字符串值来获取类别(或我的情况下的页面),然后通过路径(或路径)搜索数据库。

希望这有帮助。

克雷格