如何改变前缀EPiServer正在添加到html中的src属性

时间:2012-03-29 15:56:03

标签: episerver

我有一个html的片段,它包含在模板化的EPiServer页面的属性中,在该html中有一个img标签,其中有一个相对的URL。

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

我理解这是由HtmlRewriteToExternal完成的,因此与aspx模板(确实存在于Templates\Pages中)一起存储的图像文件位置正确,但是图像是用于作为html片段的一部分在我的情况下实际存储在PageFiles/nnn/下(其中nnn实际上是父页面的PageFolderID),我需要以某种方式使改变的html反映出来。

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

我已经阅读了我在EPiServer网址重写上可以找到的所有内容,但找不到任何暗示添加此前缀的位置或如何停止或更改它的提示。

我读过的东西:


我对我实际想要达到的目标采取完全不同的解决方案,具体如下:

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

  • setfolder /
    • htmlfileA.html
    • htmlfileB.html
    • CSS /
      • styles.css的
    • 图像/
      • piccy1.png
      • piccy2.png
    • JS​​ /
      • magic.js

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

2 个答案:

答案 0 :(得分:1)

如果您将图像存储在作为虚拟路径提供者的PageFiles中,您应该只需使用API​​即可获取文件的URL。在PageData类(即模板中的CurrentPage)上,有一个名为GetPageDirectory()的方法,它获取页面文件夹。

您可以在此处阅读有关VPP概念的更多信息:

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

我认为不需要url重写提供程序。

答案 1 :(得分:1)

如果没有在你身边看到它,那么很难给出最好的解决方案。但是,一种简单的方法是在将属性打印到页面时更改HTML代码。

赞<%= ChangeRelativeLinks(CurrentPage [“HtmlCode”] as string)%>

在ChangeRelativeLinks(字符串htmlCode)中,您执行regexp或类似操作,将相对链接和图像更改为pagedir作为绝对路径。