net 4和c#with Routing。
我想知道如何从GetRouteUrl(或其他方式)传递DataToken中的值。
我的目标是创建一个像“mysite.com/category-title”这样的网址
并传递(隐藏在网址categoryId
),但在目标网页中,我想检索隐藏的categoryId
进行过滤。
目前我尝试使用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);
}
答案 0 :(得分:1)
您可以尝试加密QueryString中的categoryID。
答案 1 :(得分:0)
如果您使用的是最新版本的IIS,则可以使用URL Rewrite模块。
我通常使用URL通过路由映射到的查询字符串值来获取类别(或我的情况下的页面),然后通过路径(或路径)搜索数据库。
希望这有帮助。
克雷格