我有一个Episerver网站,其中JobDetailsPageController
的{{1}}方法带有Index
参数,并创建一个包含该作业详细信息的视图。网址看起来像这样:jobId
。
我想要的是在https://hostname/<root-depending-on-site-tree>/jobs/?jobid=44
表单上使用网址,必须创建一个工作头衔并附加ID。我过去使用非Episerver站点上的标准ASP.NET MVC属性路由完成了这项工作,但EpiServer有自己的路由,我不太了解can't figure out。
另外,在斜杠之后添加非查询字符串会一直向我发送(毫不奇怪)404页面,所以我需要以某种方式自定义此行为。我需要使用EpiServers标准路由以最右边的“父”,但忽略后一部分(漂亮的位)。
是否可以在EpiServer的页面树中的普通页面上创建此类URL?我知道可以创建静态路由,但是这个节点可以像任何其他页面一样移动,所以我无法避免使用EpiServer。
答案 0 :(得分:3)
请参阅this blog post。您正在寻找的是partial routing。
答案 1 :(得分:1)
@johan是对的,部分路由是这样做的一种方式。只是想添加其他可能或可能不符合您需求的可能解决方案。
将数据导入为内容
您可以考虑将内容树中直接从您拥有的任何来源导入作业广告,而不是动态提供内容,而是将其作为特定根页下方的单独页面导入。这会给你带来很多好处 - 页面会被缓存,它会支持多种语言,编辑可以直接在EPiServer CMS中看到内容,数据可以手动调整等等。
如果您的数据不经常更改,并且您需要为编辑者提供一种手动创建新工作广告的方式,这将是一个很好的解决方案。
实施您自己的内容提供商
向EPiServer提供动态数据的另一种方法是编写自己的自定义内容提供程序。您可以在此处找到文档:http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/7/Content-Providers/Content-Providers/
此解决方案需要更多编码并且更复杂,但它也有一些好处。如果需要,可以不仅提供来自外部数据源的内容,还可以通过直接在EPiServer UI中更改值来更新该数据。