【问题标题】:Convert query parameters to "pretty urls"将查询参数转换为“漂亮的 url”
【发布时间】:2017-03-15 17:31:07
【问题描述】:

我有一个带有 JobDetailsPageControllerIndex 方法的 Episerver 站点,该方法采用 jobId 参数并创建一个包含有关该作业的一些详细信息的视图。网址看起来像这样:https://hostname/<root-depending-on-site-tree>/jobs/?jobid=44

我想要的是在.../jobs/manager-position-telco-44 表单上添加网址,基本上是创建一个职位名称并附加 ID。我过去曾在非 Episerver 站点上使用标准 ASP.NET MVC 属性路由来完成此操作,但 EpiServer 有自己的路由,我不太了解,can't figure out

此外,在斜杠之后添加非查询字符串会始终将我(毫不奇怪)发送到 404 页面,因此我需要以某种方式自定义此行为。我需要使用 EpiServers 标准路由以在正确的“父”处结束,但忽略后面部分(漂亮的部分)。

是否可以在 EpiServer 的页面树中的普通页面上创建这样的 url?我知道可以创建静态路由,但是这个节点可以像任何其他页面一样移动,所以我无法避免 EpiServer。

【问题讨论】:

    标签: asp.net url-routing friendly-url episerver episerver-7


    【解决方案1】:

    请参阅this blog post。你要找的是partial routing

    【讨论】:

    • 我已经遇到过这两种情况,但是当你赶时间时,谷歌搜索中的大量测试很快就会变得不堪重负,所以我真的无法足够快地消化它们以看到这一点这是正确的东西。乍一看,它似乎能够很好地做到这一点。如果它对我有用,我会给你一个赞成票。谢谢!只是关于 Stack Overflow 礼仪和发布规则的提示:发布到文章的答案,而不是将内容嵌入到答案本身中,通常不受欢迎,因为链接失效会使这些答案在时间上变得不那么有价值。仅供参考:)
    • 啊,自动更正:“大量测试”=“大量文本”
    • 不确定 API 是否已更改,但您正在参考 EPi9 文档,尽管问题被标记为标签 episerver-7。 EPi7 文档的正确链接在这里:world.episerver.com/documentation/Items/Developers-Guide/…
    【解决方案2】:

    @johan 是对的,部分路由是这样做的一种方式。只是想添加其他可能的解决方案,这些解决方案可能符合您的需求,也可能不符合您的需求。

    将数据作为内容导入

    您可以考虑将您的招聘广告直接从内容树中的任何来源导入为特定根页面下方的单独页面,而不是动态提供内容。这会给你带来很多好处——页面会被缓存,它会支持多种语言,编辑者可以直接在 EPiServer CMS 中看到内容,数据可以手动调整等等。

    如果您的数据不经常更改并且您需要为编辑提供一种手动创建新招聘广告的方法,这将是一个很好的解决方案。

    实现您自己的内容提供者

    另一种向 EPiServer 提供动态数据的方法是编写您自己的自定义内容提供程序。你可以在这里找到文档:http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/7/Content-Providers/Content-Providers/

    此解决方案需要更多编码且更复杂,但它也有一些好处。如果需要,不仅可以提供来自外部数据源的内容,还可以通过直接在 EPiServer UI 中更改值来更新该数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 2022-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多