我有一个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存储/发布。每个集合的结构看起来像
我认为我应该为该集创建一个EPiServer页面,然后为每个html文件创建子页面,将文件中的html存储在子页面的属性中。目前我将相关的静态文件存储在相关setfolder页面的PageFiles中,因为这似乎是放置它们的逻辑最一致的地方。
答案 0 :(得分:1)
如果您将图像存储在作为虚拟路径提供者的PageFiles中,您应该只需使用API即可获取文件的URL。在PageData类(即模板中的CurrentPage)上,有一个名为GetPageDirectory()的方法,它获取页面文件夹。
您可以在此处阅读有关VPP概念的更多信息:
我认为不需要url重写提供程序。
答案 1 :(得分:1)
如果没有在你身边看到它,那么很难给出最好的解决方案。但是,一种简单的方法是在将属性打印到页面时更改HTML代码。
赞<%= ChangeRelativeLinks(CurrentPage [“HtmlCode”] as string)%>
在ChangeRelativeLinks(字符串htmlCode)中,您执行regexp或类似操作,将相对链接和图像更改为pagedir作为绝对路径。