Web配置中的动态图像位置

时间:2014-09-29 13:07:35

标签: c# asp.net

我是.NET新手,我想将图像添加到ASPX页面(WebForms),但我希望图像位置可以在Web配置文件中进行配置。我发现的一切都比我预期的要复杂得多。下面,ASPX页面上的顶行是我试图开始工作,而第二行正常工作,图像位置是硬编码的。我错过了什么?

ASPX页面:

<asp:Image ID="MainLogo" runat="server" ImageUrl='<%=MainLogo%>' />
<asp:Image ID="Image1" runat="server" ImageUrl="~/Images/main-logo.png" />

代码背后:

public partial class SiteMaster : MasterPage
    {
        public string MainLogo = WebConfigurationManager.AppSettings["MainLogoLocation"];

        protected void Page_Load(object sender, EventArgs e)
        {
            Page.Title = WebConfigurationManager.AppSettings["SiteTitle"];

        }
    }

Web配置:

<add key="MainLogoLocation" value="~\Images\main-logo.png"/>

2 个答案:

答案 0 :(得分:1)

在网络配置中 你可以设置路径

<add key="MainLogoLocation" value="~\Images\main-logo.png"/>

在aspx页面

<asp:Image ID="Image1" runat="server"/>

cs代码 protected void Page_Load(object sender,EventArgs e)

{
    Image1.ImageUrl= WebConfigurationManager.AppSettings["MainLogoLocation"].ToString();

}

答案 1 :(得分:0)

复杂解决方案:

您可以通过创建自己的表达式生成器轻松完成此操作。在ASP.Net中,表达式看起来像&lt;%$ SomePrefix:SomeProperty%&gt;。

表达式构建器在web.config中注册,带有前缀。所以上面会调用一个前缀为&#34; SomePrefix&#34;的表达式构建器。并要求&#34; SomeProperty&#34;

创建自定义表达式构建器并不困难。您基本上只是创建一个继承自&#34; ExpressionBuilder&#34;的类,然后实现GetCodeExpression和GetEvalData方法。

然后你必须在web.config中注册它,例如

<system.web>
  <compilation debug="true">
    <expressionBuilders>
      <add expressionPrefix="path" 
        type="XYZ.PathExpressionBuilder, YourAssemblyName"/>
    </expressionBuilders>
  </compilation>
</system.web> 

http://haacked.com/archive/2006/11/29/Express_Yourself_With_Custom_Expression_Builders.aspx/