Web表单和URL重写:隐藏ID,显示名称?

时间:2012-05-16 08:37:55

标签: c# asp.net url-rewriting webforms url-routing

我正在使用URL重写,并且遇到了一些问题。我希望我的网址是这样的:

www.domain.com/product/myproduct

但我也希望能够在不访问数据库的情况下检索产品的ID。我想过有一个像这样的网址:

www.domain.com/product/myproduct/1 

www.domain.com/product/1-myproduct

但是,如果我能隐藏ID,那就更好了。

那么,我该如何以最简单的方式做到这一点?

目前我的Global.asax有以下路线:

routes.MapPageRoute("Produkt visning",
                        "legetoej/{Categoryname}/{SubCategoryname}/{ProductName}",
                        "~/SingleProduct.aspx");

当我在SIngleProduct.aspx上找到我喜欢的名字时:

object productRoute = Page.RouteData.Values["ProductName"];

        if (productRoute != null && !string.IsNullOrEmpty(productRoute.ToString()))
        {
// do stuff
}

如果我很简单就可以获得ID而不是名字,那就太棒了。

非常感谢 - stackoveflowers; - )

1 个答案:

答案 0 :(得分:1)

隐藏产品的ID ...获取ID并对其应用加密...类似DES或Triple DES,然后将Server.URLEncode方法应用于ID,然后您可以轻松隐藏ID。 / p>

当您打开页面时,您可以简单地获取加密的ID并执行Server.URLDecode并解密ID。

无论如何......为什么你不把产品的ID作为get参数传递?就像是... www.domain.com/product/myproduct?PID=#$$#12,其中PID已加密并且URL编码,然后您可以轻松处理它。