我是.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"/>
答案 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/