我正在尝试在我的母版页中使用AppSettings显示asp:ImageButton的ImageUrl,如下所示:
View.Master:
....
<asp:ImageButton ID="aspShowHideButton" ImageUrl='<%# System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString()%>images/arrowUpButton.gif' runat="server" />
不幸的是,当我在浏览器中提取它时,这是正在呈现的代码:
<input type="image" name="ctl00$ctl00$aspContentMain$aspShowHideButton" id="aspContentMain_aspShowHideButton" onmouseover="ShowHideButtonMouseOver()" onmouseout="ShowHideButtonMouseOut()" src="../%3C%25#%20System.Configuration.ConfigurationManager.AppSettings(%22HomeDirectory%22).ToString()%25%3Eimages/arrowUpButton.gif" />
所以它从字面上看我的ImageUrl,但是我希望它取得键的值,即:
...
<appSettings>
....
<add key="HomeDirectory" value="/" />
....
我已经尝试过删除“ToString()”函数,我尝试了System.Configuration ....语句中的“#”和“$”。我还尝试使用以下方法在Page_Load函数中使用:
Protected Sub Page_Load(....)
If Not IsNothing(Master.FindControl("aspShowHideButton")) Then
Dim ShowHideButton As ImageButton = Master.FindControl("aspShowHideButton")
ShowHideButton.ImageUrl = System.Configuration.ConfigurationManager.AppSettings("HomeDirectory") + "images/arrowUpButton.gif"
End If
但这似乎也不起作用,我假设是因为它无法找到我想要的控件(即aspShowHideButton)。
基金上,我希望在我的web.config文件中有一个键/值对,允许我改变图像的位置,我希望能够在ImageButton中使用这个键/值对:ImageUrl on my母版页,这似乎是一个非常受欢迎的事情。任何建议,指示,都表示赞赏!
谢谢!
答案 0 :(得分:1)
要在服务器标记中使用appsettings,请使用以下语法:
<%$ AppSettings:HomeDirectory %>
但是你将无法连接ImageUrl的sufix。请注意,如果你想在asp.net服务器控件中引用主目录,〜就可以了。
<asp:ImageButton ID="aspShowHideButton" ImageUrl="~/images/arrowUpButton.gif" runat="server"/>
简单的解决方案
在服务器端代码上初始化ImageUrl属性,比如说Page_Load事件。在那里,您将能够使用您想要的任何服务器代码。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
this.aspShowHideButton.ImageUrl = System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString() + "images/arrowUpButton.gif";
}
}
现在,如果您确实需要直接在ImageButton标记中定义这种连接,则需要使用代码表达式生成器。 Read about that here
使用Code Expression Builder,您将能够在ImageButton标记中使用这种语法:
ImageUrl="<%$ Code: System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString() + "images/arrowUpButton.gif" %>"
答案 1 :(得分:1)
你可以试试这个:
<asp:ImageButton runat="server" ImageUrl="<%$ AppSettings:FullPath %>images/image001.jpg" ></asp:ImageButton>
(或)为此工作有一项小工作:
Web.Config中:
<appSettings>
<add key="testKey" value="images/up.gif" />
</appSettings>
添加图片按钮:
<asp:ImageButton ID="ImageButton1" runat="server" />
从代码隐藏中你可以这样调用:
protected void Page_Load(object sender, EventArgs e)
{
this.ImageButton1.ImageUrl = ConfigurationManager.AppSettings["testKey"];
}