如何更改前缀EPiServer添加到HTML中的src属性

问题描述:

我有一个HTML的片段,它包含在模板化EPiServer页面的属性中,该HTML内有一个img标记,其中包含一个相对URL。如何更改前缀EPiServer添加到HTML中的src属性

当页面被查看时,我可以看到标签的src属性已被改为具有前缀/ProjectName/Templates/Pages/

据我所知,这是被由存储旁边的ASPX模板(这活确实确实在Templates\Pages)的正确定位其目的是HTML片段的部分是HtmlRewriteToExternal使图像文件,但是图像进行在我的情况下,实际上存储在PageFiles/nnn/(其中nnn实际上是父页面的PageFolderID),我需要以某种方式使改变的html反映出来。

我创建了一个继承自FriendlyUrlRewriteProvider的类并注册了我的类。我可以调试应用程序,并通过重写的方法观察请求,但是我仍然无法看到添加前缀的位置,或者知道如何更改它。我可以将src标记更改为我的类中的不同相对路径,但前缀仍在添加。

我已经阅读了关于EPiServer url重写的所有内容,但无法找到任何提示该前缀被添加到什么位置的提示,或者如何停止或更改它。

事情我已经阅读:


我打开了什么,我其实是想做到完全不同的解决方案,这是一个如下:

我有多个独立的静态html文件和相关的图像/ css/js文件,我试图用EPiServer存储/发布。每一组的结构看起来像

  • setfolder/
    • htmlfileA.html
    • htmlfileB.html
    • CSS/
      • 风格。CSS
    • 图像/
      • piccy1.png
      • piccy2.png
    • JS/
      • magic.js

我想我应该为这个集合创建一个EPiServer页面,然后为每个html文件创建一个子页面,将这些文件中的html存储在子页面的属性中。目前,我将相关的静态文件存储在相关的setfolder页面的PageFiles中,因为这似乎是放置它们时逻辑上最一致的地方。

+0

有人有类似的问题,没有解决http://world.episerver.com/Modules/Forum/Pages/thread.aspx?id=41534 – 2012-03-30 09:17:50

+0

另一个未回答的问题:“阻止UrlReWrite为特定的页面类型”http: //world.episerver.com/Modules/Forum/Pages/thread.aspx?id=19395 – 2012-03-30 09:52:16

+0

我向EPiServer论坛发布了类似的问题。 http://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=57845 – 2012-03-30 10:26:54

如果没有在您面前看到它,就很难提供最好的解决方案。但是一个简单的方法是在将属性打印到页面时更改HTML代码。

喜欢<%= ChangeRelativeLinks(当前页[“HtmlCode”]作为字符串)%>

而在ChangeRelativeLinks(串htmlCode)你改变为相对链接和图像到pagedir一个正则表达式或类似绝对路径。

+0

这是一个好主意,我没有想到这一点。谢谢! – 2012-04-02 09:19:30

+0

将相对链接更改为绝对链接后,即将发送页面到客户端时发生的html重写将忽略它们。好极了!这里是我生成的绝对路径前缀:'ResolveUrl(String.Format(“〜/ PageFiles/{0} /”,GetPage(CurrentPage.ParentLink)[“PageFolderID”]));' – 2012-04-03 09:23:40

+0

更多的代码隐藏我'已使用可在这里:https://gist.github.com/2291964(随意复制代码粘贴到您的答案) – 2012-04-03 13:27:56

如果您将图像存储在PageFiles这是一个虚拟路径提供程序,您应该能够简单地通过使用API​​获取您的文件的网址。在PageData类(即您的模板中的CurrentPage)中,您有一个名为GetPageDirectory()的方法,它可以获取页面文件夹。

您可以在此处详细了解VPP概念:

http://sdk.episerver.com/library/cms6.1/Developers%20Guide/Core%20Features/File%20System/File%20System%20and%20VPPs.htm

无需对URL重写提供商为了这个,我想。

+0

感谢您的回答。我已经使用了GetPageDirectory(),所以我知道你的意思,我甚至创建了该扩展https://gist.github.com/2205546/5258de36e14b6487d38978a6e1e05f93ce4a8c89#L37我遇到的问题是整个html块将在一个由用户设置的html页面属性,因此我没有机会直接设置src属性。因此,虽然我可以通过编程方式找到图像的路径,但我无法弄清楚如何将该路径应用于src属性,或重定向浏览器的请求。摆弄html重写器是我目前最好的猜测。 – 2012-03-29 21:37:15