处理Composite C1中生成的页面

mag*_*tic 4 c# asp.net routes c1-cms

在我目前试图转向Composite的ASP.Net项目中,我处理非物理页面时遇到了麻烦.

为简单起见,假设我有一个网上商店,数据库中的每个类别都有自己的网址.(例如:/ myshop/clothes)

在ASP.NET项目中,这样的URL将被路由到处理请求的页面Category.aspx,并从数据库中读取类别内容.

复合似乎更关注"真实"页面,实现这样的事情的最佳方式是什么?(特别是路由)

并且:有没有办法让这些生成的页面与Navigation.Path等模块一起使用?

Pau*_*erø 5

对于菜单生成和面包屑,您需要自己处理它,最终使用SiteMapProvider上的SiteMap.Resolve事件动态挂钩"不存在的"页面.

关于路由,C1中有一个功能,它将URL解析为第一个"真实页面",并将您可以使用的URL的多余部分交给您.让我们说/ myshop是你的商店页面,用户请求/ myshop /衣服,然后它仍然是/ myshow将被执行,你会在那里放置代码来处理你的类别.

在你的"myshop"页面上提取"衣服"的代码将是Composite.Core.Routing.Pages.C1PageRoute.GetPathInfo(),并指示C1不要抛出404错误,你打电话Composite.Core.Routing.Pages.C1PageRoute.RegisterPathInfoUsage(),让C1知道"衣服"是一个有效的类别.

在此处阅读有关API的更多信息.

如果您需要处理选择类别时的不同情况,并且当用户直接点击/ myshop时,您可以将MyShop页面设置为使用特定模板,并在那里将<rendering:contentplaceholder>元素包装在具有某些功能的函数中一种别的 - 如果逻辑.如果未选择任何类别,则打印出内容<rendering:contentplaceholder>,否则根据类别进行一些查找并打印出其他内容.