[英]How to specify path relative to current Master Page File
我是asp.net的新手,但母版页似乎可以满足我的需要-允许我在运行时配置不同的模板/演示文稿/样式,因此我的应用可以通过选择其他母版页来呈现不同的外观。 每个母版页都位于其自己的文件夹中,该文件夹中包含针对该“模板”量身定制的一组图像-然后,我希望在内容页面中引用位于当前所选母版页的文件夹中的各种图像,例如菜单中的导航按钮。 DataPager:
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1"
PageSize="25">
<Fields>
<asp:NextPreviousPagerField ButtonType="Image" ShowFirstPageButton="True"
ShowNextPageButton="False"
FirstPageImageUrl="<<Current Master Root>>/img/action-first.png"
PreviousPageImageUrl="<<Current Master Root>>/img/action-prev.png" />
<asp:NumericPagerField ButtonCount="10" NextPageText=">>"
PreviousPageText="<<" />
<asp:NextPreviousPagerField ButtonType="Image" ShowLastPageButton="True"
ShowPreviousPageButton="False"
LastPageImageUrl="<<Current Master Root>>/img/action-last.png"
NextPageImageUrl="<<Current Master Root>>/img/action-next.png" />
</Fields>
</asp:DataPager>
TEST: "<%= System.IO.Path.GetDirectoryName(MasterPageFile) %>"
(this does not work if we try to use it inside the DataPager?)
是否有适当的方法来执行此操作,例如使用tilda〜字符到达应用程序根文件夹? 在代码中设置此代码也被证明是乏味的,尤其是对于诸如DataPager那样的属性嵌套在子控件的动态列表中的事情而言(例如,我不知道如何在其中设置属性DataPager1.Fields [0] .NextPreviousPagerField.FirstPageImageUrl码)。
我发现尝试使用主题进行此操作比开始时需要更多的编码,因为我必须在皮肤文件中包括整个控件定义,而不仅仅是图像url属性,然后我必须在每个主题/中复制该代码/皮肤。 如果我碰巧想要一个具有不同按钮和/或数字字段配置的DataPager,那么我还必须在每个外观文件中复制这些变化。 如果以后再进行更改,则必须记住也要在所有外观上进行该更改-严重违反了将代码与外观分开的目的。
我的应用程序运行多个项目,并且每个项目都可以选择自己的模板。 对于整个应用程序,我想说:如果当前项目使用TemplateX,则使用/ TemplateX / img /文件夹中的图像,如果选择了TemplateY,则使用/ TemplateY / img /中的图像。 众所周知,不能总是依靠CSS来确定在哪里使用什么图像,因此我们必须能够将图像引用直接放在HTML输出中。
在我开发的自定义ISAPI DLL Web系统中,我仅使用诸如“ [#HTML.Template] /img/prev.png”之类的替换字符串将模板文件夹粘贴在图像URL的前面。 是否有办法可以挂接自定义.aspx预处理器,以将所有出现的事件手动替换为当前选择的文件夹(如上例中的“ <<当前主根>>”)?
尝试使用像这样的东西
var path = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.